我的应用程序需要将依赖注入的广泛使用与使用JSON作为公共API相结合。这显然需要一个自定义JavaScriptConverter。
现在,我的JavaScriptConverter的Deserialize方法如下所示:
public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
var result = IocHelper.GetForType(type);
return result;
}
这提供了适当的课程。不幸的是,它无法使用适用的值填充类成员。我缺少的是一种告诉Serializer的方法,“这是你要求的类型。现在填写它。”
答案 0 :(得分:1)
我使用的解决方案是从JavaScriptSerializer切换到Newtonsoft's JSON converter
通过编写一个CustomCreationConverter,我能够完成一次往返旅行:
public class JsonDomainConverter : CustomCreationConverter<object>
{
public JsonDomainConverter()
{
}
public override bool CanConvert(Type objectType)
{
return objectType.IsInterface;
}
public override object Create(Type objectType)
{
return IocHelper.GetForType(objectType);
}
}
毫无疑问,使用JavaScriptSerializer可以采用相同的方法,但我无法弄清楚如何使其工作。使用Newtonsoft的东西,它最多花了几个小时,只有几行代码。