標準の住所プロパティを取得して保存するクラスがあります。State プロパティのタイプは USStateCodesType です。プロパティを格納するために使用されるコードのサンプルを次に示します。
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true, Namespace="http://SP/Items/Schemas")]
public partial class BusinessAddress
{
private string address1Field;
private string address2Field;
private string cityField;
private USStateCodesType stateField;
private bool stateFieldSpecified;
private string zipField;
/// <remarks/>
public string Address1
{
get
{
return this.address1Field;
}
set
{
this.address1Field = value;
}
}
USStateCodesType には、文字列キーと値を持つプライベート ディクショナリが含まれています。デフォルトのコンストラクターはディクショナリをロードし、オーバーロードによって呼び出されます。公開プロパティは State のみです。次のようにコード化されます。
public string State
{
get
{
return iDict[_key];
}
set
{
if (iDict.ContainsValue(value))
{
foreach (string k in iDict.Keys)
if (iDict[k] == value)
_key = k;
}
else
_key = string.Empty;
}
}
USStatesCodeType の上の属性は、前の例と同じです。
問題は、オブジェクトを XML 文字列にシリアル化しようとすると、次のようになることです。
<BusinessAddress>
<Address1>12345 AnyStreet</Address1>
<City>Los Angles</City>
<Zip>90210</Zip>
</BusinessAddress>
私のデータベースでは、CA を保存しています。XMLを出してほしい
<BusinessAddress>
<Address1>12345 AnyStreet</Address1>
<City>Los Angles</City>
<State>California</State>
<Zip>90210</Zip>
</BusinessAddress>
シリアル化の前にオブジェクトのプロパティを確認すると、State プロパティの値としてカリフォルニアが表示されます。
私は何を間違っていますか?