私は列挙型を持っています:
public enum ComponentType
{
None = -1,
Equipment = 0,
Cable = 2,
Port = 4,
Space = 8,
Site = 9,
Building = 10,
Floor = 11,
DataCenter = 12,
Area = 13,
Rack = 14,
Conduit = 16,
Person = 17,
Pit = 18
}
この列挙型を WCF サービスの反対側で使用したいと思います。せっかくなので、シリーズ化せねば!
シリアライザーが次を生成していることがわかります。
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.website.com/api")]
public enum ComponentType {
/// <remarks/>
None,
/// <remarks/>
Equipment,
/// <remarks/>
Cable,
/// <remarks/>
Port,
/// <remarks/>
Space,
/// <remarks/>
Site,
/// <remarks/>
Building,
/// <remarks/>
Floor,
/// <remarks/>
DataCenter,
/// <remarks/>
Area,
/// <remarks/>
Rack,
/// <remarks/>
Conduit,
/// <remarks/>
Person,
/// <remarks/>
Pit,
}
残念ながら、それは良くありません。次のコードは、両端で異なる動作をします。
int componentId = 123;
int flag = ComponentDao.GetFlagForComponentById(componentId);
ComponentType componentType = ((ComponentType)flag);
//componentType == ComponentType.None (client end of service)
//componentType == ComponentType.Equipment (server end of service)
何か役に立つものがあるかもしれないと考えて、いくつかの属性デコレータを見回しました: http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlenumattribute.aspx。このリンクは、シリアライゼーション名を変更する方法を示していますが、値については何も述べていません。
これは、このシリアル化エンジンを使用して列挙値を維持できないということですか?