我使用JSON.NET爲不同目的序列化和反序列化對象。我是DI的忠實粉絲,但下面的代碼給了我寒戰。氣味是不好的代碼:DI和JSON.NET
public class Foo : Baz
{
private readonly IBar bar;
public Foo()
: this(ObjectFactory.GetInstance<IBar>())
{ }
public Foo(IBar bar)
{
if (bar == null)
throw new ArgumentNullException("bar");
this.bar = bar;
}
... rest of class ...
}
默認的構造函數是讓我寒戰的東西。我已經添加了此支持造成JSON.NET反序列化:
string jsonString = ...;
string concreteBazType = ...;
Baz baz = (Baz)JsonConvert.DeserializeObject(jsonString, Type.GetType(concreteBazType);
通知之類Foo inherrits從抽象基類巴茲!
我的問題,你所有的DI和JSON.NET怪傑在那裏:我如何改變代碼,以避免代碼嗅覺默認構造函數給我在類Foo?