0

JsonConverterから継承するクラスがあります。 JsonDataBagCreationConverter<T> : JsonConverter where T : IDataBag

IDataBagを実装するクラスCompanyがあります

Company JsonDataBagCreationConverterの単一のプロパティを逆シリアル化すると、期待どおりにReadJsonメソッドが呼び出されます。Companyの配列を逆シリアル化すると、JsonDataBagCreationConverterのReadJsonメソッドが期待どおりに呼び出されます。また、会社の一般的なリストでも機能します。

ただし、Company json.netの特定のコンテナーでは、リストのコンテンツがCompanyタイプであることを認識しません。したがって、逆シリアル化するときにJsonDataBagCreationConverterは使用されません。

つまり、Companyオブジェクトを格納するSystem.Collections.DictionaryEntry、System.Collections.ArrayList、System.Collections.Hashtable、System.Collections.SortedListタイプのコンテナー。

これらのコンテナは一般的ではないことを私は知っています。(デ)シリアライザーにこれらのコンテナーの内容を確認させ、内容がIdatabag(つまり会社)の場合にJsonDataBagCreationConverterを使用することは可能ですか?

よろしくお願いします

1月

4

1 に答える 1

0

コンバーターから を削除し、ロジックをwhere T : IDataBagオーバーライド CanConvertして記述し、そこで型をチェックして、それに応じて true または false を返します。

于 2012-11-26T06:24:01.760 に答える