Ich verwende JSON.NET zum Serialisieren und Deserialisieren von Objekten für verschiedene Zwecke. Ich bin ein großer Fan von DI, aber der Code unten gibt mir die Schüttelfrost. Gerüche wie schlechter Code:DI und 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 ...
}
Der Standardkonstruktor ist die Sache, die mir die Schüttelfrost gibt. Ich habe hinzugefügt, dies die Deserialisierung von JSON.NET verursacht zu unterstützen:
string jsonString = ...;
string concreteBazType = ...;
Baz baz = (Baz)JsonConvert.DeserializeObject(jsonString, Type.GetType(concreteBazType);
Hinweis der Klasse Foo inherrits von der abstrakten Basisklasse Baz!
Meine Frage an alle DI und JSON.NET Geeks da draußen: Wie kann ich Code ändern, um den Code-Geruch zu vermeiden, den der Standardkonstruktor mir in Klasse Foo gibt?