6
[DataContract]
public enum Color
{
    Red,
    Blue
}

[DataContract]
public enum Color1
{
    [EnumMember]
    Red,
    [EnumMember]
    Blue
}

この 2 つの列挙型は、シリアル化時またはクライアント側で異なる方法で処理されますか?

4

3 に答える 3

9

を列挙型に適用したDataContractAttributeので、 を使用して、その列挙型のどのメンバーを含める必要があるかを明示的に指定する必要がありますEnumMemberAttribute

したがって、あなたの場合、2つの列挙型は2つの異なるコントラクトを生成します.1つはメンバーがなく、もう1つは2つのメンバーがRedあり、Blue.

を列挙型に適用しない場合、DataContractAttributeその列挙型のすべてのメンバーが暗黙的に契約に含まれます。

主にセクションと セクションの説明については、こちらを参照してください。Enumeration Member ValuesNotes on Simple Enumerations

于 2013-03-01T09:55:23.397 に答える
5

EnumMember 属性で enum 値をマークしない場合、データ コントラクトの一部にはなりません。これは、wsds/contract/proxies に表示されず、クライアントが使用できないことを意味します。

于 2013-03-01T09:55:51.597 に答える
0

クライアントで既知のタイプのメンバーとして認識されるとは限りColorません。これは、それがコントラクトの一部であると明示的に言っていないため、プロキシを生成するときにそれを尊重する理由がないためです。

于 2013-03-01T09:53:31.743 に答える