Estoy usando JSON.NET para serializar y deserializar objetos para diferentes propósitos. Soy un gran admirador de DI, pero el siguiente código me da escalofríos. Huele mal al código:DI y 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 ...
}
El constructor predeterminado es lo que me da escalofríos. He añadido esto para apoyar la deserialización causada por JSON.NET:
string jsonString = ...;
string concreteBazType = ...;
Baz baz = (Baz)JsonConvert.DeserializeObject(jsonString, Type.GetType(concreteBazType);
Aviso inherrits los Foo clase de la clase base abstracta Baz!
Mi pregunta a todos los frikis de DI y JSON.NET: ¿cómo puedo cambiar el código para evitar el olor de código que el constructor predeterminado me da en la clase Foo?