依赖注入和JavaScriptConverter.Deserialize

时间:2011-05-06 14:41:20

标签: json deserialization javascriptserializer

我的应用程序需要将依赖注入的广泛使用与使用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的方法,“这是你要求的类型。现在填写它。”

1 个答案:

答案 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的东西,它最多花了几个小时,只有几行代码。