我正在使用 JSON.NET 为不同目的序列化和反序列化对象。我是 DI 的忠实粉丝,但下面的代码让我不寒而栗。闻起来像坏代码:
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 从抽象基类 Baz 继承!
我对所有 DI 和 JSON.NET 极客的问题是:如何更改代码以避免默认构造函数在 Foo 类中给我的代码气味?