basicHttpBindingを使用するWCFサービスがあります。サービスメソッドでは、返されるクラスがあります。このクラスでは、プロパティを動的に/プログラムで除外し、XMLのプロパティ名を変更する必要があります。これは、WSDLとサービスメソッドが呼び出されたときの両方で実行する必要があります。WCFでXmlAttributeOverridesを使用する方法
私は最良のソリューションを探していましたが、(1)XmlSerializerでXmlAttributeOverridesを使用するか、(2)カスタマイズする必要があるクラスでIXmlSerializableを実装する必要があるようです。あるいはもっと良い解決策があるかもしれません。私は、Property Name + "Specified"をクラスに追加でき、それらのプロパティを除外できることを知っています。ただし、これはWSDLでは除外されず、プロパティの名前変更に関する問題は解決されません。
なぜこれをしたいですか?アプリケーションのグローバリゼーションとカスタマイズのためです。私たちのアプリケーションには多くのプロパティが組み込まれていますが、これらのプロパティはアプリケーションのユーザから完全に隠されたり隠されたりすることがあります。
私は最良の選択肢は、自分のカスタムシリアライザでWCFシリアライザを交換することです。しかし、XmlSerializerを使用するカスタムクラスに対してこれを行う方法の良い例は見つかりませんでした。また、私はどのように特定のクラスのXmlAttributeOverridesを渡すか分からない。
また、これは同じ機能を必要とする他の人には当てはまらないかもしれませんが、私のアプリケーションでは、アプリケーションの存続期間中に値を1回だけ初期化する必要があります。ひどいC#では、静的な読み取り専用変数を属性とともに使用することはできません。
public Customer
{
public string Address1
{
get;
set;
}
public string Address2
{
get;
set;
}
public string Zipcode
{
get;
set;
}
}
この例では、私が代わりに郵便番号のアプリケーションの使用の郵便番号を特定のインストール用に好きで、アドレス2プロパティを隠します:
はここでクラスの簡単な例です。
ご協力いただきありがとうございます。
おかげで、 タイラー
OPにWSDLなどが記述されています。また、プロパティバッグはシリアル化レイアウトよりもほとんど*選択肢がありません。 –
プロパティバッグはプロパティ名をインデクサ文字列に変更するので、リアルタイムで名前を選択する柔軟性が得られます。しかし、私はwsdlとクライアントがオブジェクトを消費することは、実際にプロパティのインデクサやデータ型の良い定義を得るとは思わない。私は本当により良い構造化XMLとスキーマが必要です。私は私のOPに例を追加します。 – tbcarver