Когда у меня есть класс без конструктора по умолчанию, то есть с помощью инъекции зависимостей для передачи его зависимостей, может ли Newtonsoft.Json
создать такой объект?Как Json.NET может выполнять инъекцию зависимостей во время десериализации?
Например:
public class SomeFoo
{
private readonly IFooDependency _dependency;
public SomeFoo(IFooDependency dependency){
if(dependency == null)
throw new ArgumentNullException("dependency");
_dependency = dependency;
}
public string Data { get; set; }
public int MoreData { get; set; }
public void DoFoo(){
Data = _dependency.GetFooData();
MoreData = _dependency.GetMoreFooDate();
}
}
Во время сериализации, я только заботиться о хранении данных и MoreData (и тип объекта, но давайте не усложнять на данный момент). Теперь десериализации, я могу назвать что-то вроде
var obj = JsonConvert.DeserializeObject<SomeFoo>(jsonText);
Как я могу позволить JsonConvert знать о моей DI контейнера?
(Примечание. Обходной процесс должен состоять в том, чтобы всегда иметь конструкторы по умолчанию в моих классах и вызывать Service Locator там, чтобы получить любые зависимости, которые мне нужны. Я просто ищу еще более чистое решение без использования моих классов с такими конструкторами).
Возможный дубликат [DI и JSON.NET] (http://stackoverflow.com/questions/2140978/di-and-json-net) – Steven