インターフェイス インスタンスのコレクションの逆シリアル化
問題:
インターフェイス インスタンスのコレクションを逆シリアル化しようとしたときJSON.NET を使用したインターフェイス インスタンス、エラー「タイプのインスタンスを作成できませんでした」 ITestInterface. 型はインターフェイスまたは抽象クラスであるためインスタンス化できません。
解決策:
型名の処理の使用:
JSON.NET は、インターフェイス インスタンスの逆シリアル化を処理する「型名処理」と呼ばれるメカニズムを提供します。 JsonSerializerSettings オブジェクトの TypeNameHandling プロパティを TypeNameHandling.Objects に指定すると、JSON.NET は JSON データとともにインターフェイス実装の型名をシリアル化します。
逆シリアル化中に、JSON.NET は指定された型名を使用します。インターフェイス実装の適切なインスタンスを作成します。 TypeNameAssemblyFormat プロパティを FormatterAssemblyStyle.Simple.
Code に設定することで、より正確な逆シリアル化のために型のアセンブリ名を指定することもできます。例:
シリアル化:
string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple });
逆シリアル化:
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects });
型名処理を使用する, JSON.NET は、インターフェイス インスタンスのコレクションを効果的に逆シリアル化し、正しい実装が作成されます。
以上がJSON.NET を使用してインターフェイス インスタンスのコレクションを逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。