저는 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);
공지 클래스 푸 inherrits를 추상 기본 클래스 바즈에서!
내 모든 질문 DI 및 JSON.NET 괴짜 : 기본 생성자가 Foo 클래스에서 제공하는 코드 스 냄새를 피하기 위해 코드로 어떻게 변경할 수 있습니까?