繁体   English   中英

向/从XML读/写枚举

[英]Read/Write Enum to/from XML

我正在用XmlWriter写一个枚举值,它在xml中看起来像这样:

<Tile>Plain</Tile>

writer.WriteValue(tile.ID.ToString()); // ID's type is the enum

普通是枚举值之一。 现在,当我尝试阅读此内容时,尽管它不起作用。

(TileID)reader.ReadElementContentAs(typeof(TileID), null);

当我的reader.Name ==“Tile”,这应该工作,虽然它显然无法将字符串转换为我的枚举。 是否有任何方法可以修复写入,所以我不必执行.ToString()(因为如果我不这样做,我会收到错误:“TileID不能转换为字符串”。)或修复读数?

谢谢。

我建议使用Enum.TryParse

var enumStr = reader.ReadString();
TitleID id;
if (!Enum.TryParse<TitleID>(enumStr, out id)
{
    // whatever you need to do when the XML isn't in the expected format
    //  such as throwing an exception or setting the ID to a default value
}

您可能必须使用Enum.Parse 我最近把它扔到了一个工作项目中:

public static T ParseTo<T>(string value) {
    return (T)Enum.Parse(typeof(T), value);
}

它只是使铸件更清洁。 我不需要任何错误检查,因为我们有非常严格的XML生成测试..你可能想要添加一些。

用法:

var idString = reader.ReadString();
TileID tileId = StaticClassYouPutItIn.ParseTo<TileID>(idString);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM