我正在开发一个在请求体中接受XML的API。
当我收到XML时,我使用XmlSerializer
类将XML转换为对象。该对象的一个属性是枚举值列表。
我想做的是使客户端可以传递枚举的int值,而不是传递值的名称。
例如,假设部分xml如下所示:
<Amenities>
<AmenityCode>1</AmenityCode>
<AmenityCode>2</AmenityCode>
</Amenities>
我的班级定义如下
public class HotelSearch{
public List<AmenityCode> Amenities { get; set; }
}
public enum AmenityCode {
AirConditioning = 1,
AirportTranfer = 2
}
当我序列化XmlSerializer
对象时,有没有办法告诉<AmenityCode>1</AmenityCode>
接受AmenityCode.AirConditioning
并将其翻译为HotelSearch
?
我知道我可以创建一个新的HotelSearch
对象,并通过解析XML来设置所有属性,但我的总体目标是懒惰,这会破坏目的。
答案 0 :(得分:4)
建议在序列化/反序列化请求中为枚举提供字符串值。但是如果你想要一个int值,那么尝试在枚举上使用XmlEnum属性。
public enum AmenityCode
{
[XmlEnum("1")]
AirConditioning = 1,
[XmlEnum("2")]
AirportTranfer = 2
}
还有一种方法可以创建shimmed属性,但是当涉及到许多属性时,它会变得太乱。