如何在xml中接受int并将其序列化为enum ?

本文关键字:序列化 enum int xml | 更新日期: 2023-09-27 17:53:34

我正在开发一个在请求体中接受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
}

当我序列化HotelSearch对象时,是否有一种方法可以告诉XmlSerializer接受<AmenityCode>1</AmenityCode>并将其转换为AmenityCode.AirConditioning ?

我知道我可以创建一个新的HotelSearch对象,并通过解析XML设置所有属性,但我的总体目标是懒惰,这会破坏目的。

如何在xml中接受int并将其序列化为enum ?

建议在序列化/反序列化请求中使用字符串值作为枚举。但是如果你想要一个int值,那么尝试在枚举上使用XmlEnum属性。

public enum AmenityCode 
{
       [XmlEnum("1")]
       AirConditioning = 1,
       [XmlEnum("2")]
       AirportTranfer = 2
}

还有一种方法可以创建闪烁属性,但是当涉及到许多属性时,这会变得太混乱。