クラスのデータ メンバーをクライアント アプリケーションから非表示にしながら、XmlSerializer でシリアル化することは可能ですか?
コンテキストは、アドレスを断片的に取得していますが、オブジェクトを XML にシリアライズして別のものに渡す前に、それらの断片の多くを 1 つの文字列に連結する必要があるということです。
アドレスクラスはより大きなクラスの一部であるため、ネストされていない場合、このビットを単純に継承して追加するのはより複雑であり、カスタムシリアライザーを作成する必要性が十分ではありません。
サンプル:
[DataContract]
public class Address
{
[DataMember()]
public string City
[DataMember()]
public string State
[DataMember()]
public string StreetDirection
[DataMember()]
public string StreetName
[DataMember()]
public string StreetNumber
[DataMember()]
public string StreetSuffix
[DataMember()]
public string Unit
[DataMember()]
public string Zip
[IgnoreDataMember()]
[Serializable]
public string AddressLine1
}
基本的には、渡す前に StreetXXX プロパティの連結を配置できるプレースホルダー (AddressLine1) が必要です (受信者が個々の部分を認識している場合は既にそうなっています)。
編集 - 例を追加 入力は次のようになります。
<Address>
<StreetNumber>123</StreetNumber>
<StreetDirection>S.</StreetDirection>
<StreetName>Main</StreetName>
<StreetSuffix>St.</StreetSuffix>
<Unit>207</Unit>
<City>Denver</City>
<State>CO</State>
<Zip>80123</Zip>
</Address>
しかし、私は次のようにシリアライズしたいと思います:
<Address>
<StreetNumber>123</StreetNumber>
<StreetDirection>S.</StreetDirection>
<StreetName>Main</StreetName>
<StreetSuffix>St.</StreetSuffix>
<Unit>207</Unit>
<City>Denver</City>
<State>CO</State>
<Zip>80123</Zip>
<AddressLine1>123 S. Main St.</AddressLine1>
</Address>
ありがとう、
ジョン