/ /間違ったデータが、カスタム型キャスト演算子でオブジェクトの逆直列化から戻ってきた - c#、xml、serialization、casting

間違ったデータがカスタム型キャスト演算子でオブジェクトの逆シリアル化から戻ってきた - c#、xml、serialization、casting

私は、UInt16のように動作するように設計されたクラスを持っています。だから、代わりに:UInt16 myProp、私はより説明的なアドレスmyPropを使用することができます。

ここにはスニペットがあります:

public class Address
{
public UInt16 address { get; set; }
private static UInt16 add;
public static implicit operator UInt16(Address address)
{
return add;
}

public static implicit operator Address(UInt16 i)
{
Address temp = new Address(i);
return temp;
}

public Address(UInt16 value)
{
address = value;
add = value;
}

public Address() { }
}

それから私は財産を持っています: パブリックアドレスmyAddress {get;セット; }

残りのコードは完全に機能します。

このクラスはxmlとしてシリアル化され、デシリアライズされる必要があります。

シリアル化の後、私は自分のxmlに

<myAddress>
<address>7</address>
</myAddress>

しかし、xmlファイルを削除した後、私はmyAddressプロパティを7に戻すことができません。

多分奇妙な質問...どんな考え?

回答:

回答№1は2

あなたの変換オペレータ UInt16 壊れている - それは 静的 変数は、どちらの値でも設定されます最も最近に建設されたことがある。変換演算子に渡されていた値を無視していたのは間違いだと思いませんか?

なぜあなたは静的変数を持っているのかはっきりしませんが、私はあなたがそれを取り除くべきであると強く思っています。

public static implicit operator UInt16(Address address)
{
return address.address;
}

また、.NET命名規則に従うようにプロパティの名前を変更する必要があります。理想的には名前を変更してください。 Address タイプも Address プロパティ。とにかくタイプが何を表しているのかは本当にはっきりしないが、 Value 少なくとも少し良いでしょうか?