0

私のアプリケーションでは、依存性注入の広範な使用と、パブリック API としての JSON の使用を組み合わせる必要があります。これにより、カスタム JavaScriptConverter が必要になるようです。

現在、私の JavaScriptConverter の Deserialize メソッドは次のようになっています。

public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
{
    var result = IocHelper.GetForType(type);
    return result;
}

これにより、適切なクラスが返されます。残念ながら、クラス メンバーに適切な値を設定できません。私が見逃しているのは、シリアライザーに「これがあなたが求めた型です。それを入力してください」と伝える方法です。

4

1 に答える 1

1

私が使用した解決策は、JavaScriptSerializer からNewtonsoft の JSON コンバーターに切り替えることでした。

単一の 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 の場合は、せいぜい数時間、コードは数行しかかかりませんでした。

于 2011-05-09T12:44:41.587 に答える