1

逆シリアル化のシリアル化されたクラスに基づいて、新しいクラスを生成または定義する必要があります。そのため、クラス定義をサーバーからクライアントに転送して、後でそのプロパティにアクセスできるようにしたいと考えています。

それは可能ですか?

4

2 に答える 2

1

これを行う適切な方法は、クライアントがサービスのスキーマ定義を公開して、そこから厳密に型クラス定義を生成および生成するか、DTOコントラクト定義(クラス/インターフェイス定義)を含むDLLをクライアントに提供することです。

これらのアプローチのどちらも選択しなかった場合(スキーマとインターフェイスを備えたdllはありません)、それでもクラス定義を生成したい場合は、サービスのサンプルデータから.csクラス定義を不適切な方法で生成できます(時間を計り、応答を傍受するか、httpクライアントを使用します)。ただし、このアプローチは、正確な生成または完全な生成を保証するものではありません。基本的にあなたはから行くことができます:

XML-> XSD-> C# csクラスファイル(またはXMLからC#csファイルに直接)またはJSON-> C#クラスファイル

そして、特にサーバーとクライアントの両方のコードを所有していない場合に、オブジェクトを動的に逆シリアル化することは、実行できる最悪のことです。このようにして、クラス定義をクライアントに転送しませんでした。動的オブジェクトへの逆シリアル化は、実際にはまったく非現実化ではありません。これにより、実行時にプロパティとしてアクセスできる構文上の糖衣を含む文字列のディクショナリが提供され、コンパイル時のサポートがなく、災害に相当する可能性があります。要するに、あなたがすべてのコードを所有していない限り、それをしないでください(それでもそれは良い考えではありませんが、おそらくあなたは何とかして得ることができます)

于 2013-02-12T07:22:27.760 に答える
0

プロパティ定義とデータ自体を転送する移植可能な方法の 1 つは、JSON シリアライザーを使用することです。

dynamicJSON.Net を使用してオブジェクトに逆シリアル化できます

Json.netを使用してjsonオブジェクトを動的オブジェクトに逆シリアル化します

于 2013-02-12T06:46:55.157 に答える