Non proprio la stessa cosa come questa:C'è un modo per ottenere l'iniezione di dipendenza con un convertitore personalizzato JsonConverter derivato
How do I Inject Dependencies with Ninject, where instances are deserialised from json
Se la risposta è che la classe di dati che deserializzata non dovrebbe avere bisogno di un servizio Comunque. C'è un modo per usare la dipendenza inject con una classe derivata da JsonConverter
? Ad esempio, se si ha questo:
[JsonConverter(typeof(MyCustomConverter))]
public class Foo
{
public string SomeProp { get; set; }
}
E:
public class MyCustomConverter : JsonConverter
{
private readonly IMyService myService;
public MyCustomConverter(IMyService _myService)
{
myService = _myService;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var bar = myService.SomeFunctionThatMightEffectDeserialization();
//...
}
}
Esiste un modo per collegare in modo JSON.Net crea un'istanza MyCustomConverter
per farlo lasciare Ninject fare è cosa?
EDIT Questo NON inietta un servizio in Foo
come il duplicato suggerito. Si sta iniettando solo in MyCustomConverter
in modo da poter deserializzare Foo
.
@StriplingWarrior: Il duplicato non è esattamente la stessa cosa. Non sto cercando di iniettare * nell'oggetto che sto deserializzando. L'oggetto che sto deserializzando non ha bisogno di alcun servizio, solo il convertitore JSON ha bisogno dell'iniezione di dipendenza. –
Potresti aggiungere qualche evento statico (thread statico?) Al tuo tipo 'MyCustomConverter' che permetta a un' IMyService' di essere restituito in argomenti di evento personalizzati. Imbarazzante, ma [fattibile] (http://stackoverflow.com/questions/1210026/return-a-value-from-an-event-is-there-a-good-practice-for-this). Inoltre, forse vedi qui: http://blog.ploeh.dk/2013/09/08/di-and-events-third-party-connect/ – dbc
@dbc: un'idea interessante, dovrei pensarci uno. –