Sto usando JSON.NET per serializzare e deserializzare l'oggetto per diversi scopi. Sono un grande fan di DI ma il codice qui sotto mi dà i brividi. Odori come codice errato:DI e 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 ...
}
Il costruttore predefinito è la cosa che mi dà i brividi. Ho aggiunto questo per sostenere la deserializzazione causata da JSON.NET:
string jsonString = ...;
string concreteBazType = ...;
Baz baz = (Baz)JsonConvert.DeserializeObject(jsonString, Type.GetType(concreteBazType);
Privacy i inherrits classe Foo dalla classe base astratta Baz!
La mia domanda a tutti voi DI e JSON.NET geek là fuori: come posso modificare il codice per evitare l'odore del codice che il costruttore di default mi dà in classe Foo?