我正在使用.NET中的XmlReader类解析XML文件,我认为编写一个通用的解析函数以通用方式读取不同的属性会很明智。我想出了以下功能:

private static T ReadData<T>(XmlReader reader, string value)
{
    reader.MoveToAttribute(value);
    object readData = reader.ReadContentAsObject();
    return (T)readData;
}

当我意识到时,这并不能完全按照我的计划进行。由于强制类型转换无法将int转换为数值类型,因此它会引发诸如doublestring之类的原始类型错误。有什么办法可以让我的功能以修改后的形式出现?

最佳答案

首先检查是否可以转换。

if (readData is T) {
    return (T)readData;
}
try {
   return (T)Convert.ChangeType(readData, typeof(T));
}
catch (InvalidCastException) {
   return default(T);
}

关于c# - 将 object 转换至T,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/899629/

10-10 06:45