我在一个正在处理的项目中使用枚举标志,并且进行了许多XML序列化。我希望能够将多个不同的枚举标志分配给单个枚举参数。我遇到的问题是,值只分配一次,而我希望能够分配多个枚举。
我有一个使用字符串和数组的可行解决方案:
[XmlElement("AddTags")]
public string[] AddTags
{
set
{
if (value != null)
foreach (string tag in value)
{
if (tag.Contains(","))
{
string[] split = tag.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string str in split)
Tags = (Tags | (int)EnumUtil.GetIndex<Tag>(str));
}
else
Tags = (Tags | (int)EnumUtil.GetIndex<Tag>(tag));
}
}
get
{
return EnumUtil.GetNamesInTag<Tag>(Tags).ToArray();
}
}
这给了我想要的结果,除了我更喜欢只使用一个序列化的枚举。 XML如下所示:
<AddTags>Tag1</AddTags>
<AddTags>Tag2</AddTags>
所有设置为一个包含所有这些枚举标志的int。
理想情况下,它将与相同的XML一起使用:
[Flags]
public enum Tag
{
Tag1 = 1 << 00,
Tag2 = 1 << 01,
Tag3 = 1 << 02,
}
public int Tags;
public Tag AddTags
{
set
{
Tags = (Tags | (int)value);
}
get
{
return (Tag)Tags;
}
}
不幸的是,xml只会分配一次AddTag,而无论分配多少次,因为AddTags不再是数组。我希望能够使用相同的xml多次分配此值,而无需创建数组,因为我觉得那太复杂了。谢谢。