Kas*_*dum 79 c# generics casting
我正在使用XmlReader.NET中的类解析XML文件,我认为编写通用解析函数来一般性地读取不同的属性是明智的.我想出了以下功能:
private static T ReadData<T>(XmlReader reader, string value)
{
reader.MoveToAttribute(value);
object readData = reader.ReadContentAsObject();
return (T)readData;
}
Run Code Online (Sandbox Code Playgroud)
当我意识到,这并不像我原先计划的那样完全有效; 它会引发原始类型(如intor)的错误double,因为强制转换无法从a转换string为数字类型.有没有办法让我的功能以修改后的形式占上风?
Bob*_*Bob 186
首先检查它是否可以投射.
if (readData is T) {
return (T)readData;
}
try {
return (T)Convert.ChangeType(readData, typeof(T));
}
catch (InvalidCastException) {
return default(T);
}
Run Code Online (Sandbox Code Playgroud)
ang*_*son 17
你试过Convert.ChangeType吗?
如果该方法总是返回一个字符串,我觉得很奇怪,但除此之外,那么这个改变的代码可能会做你想要的:
private static T ReadData<T>(XmlReader reader, string value)
{
reader.MoveToAttribute(value);
object readData = reader.ReadContentAsObject();
return (T)Convert.ChangeType(readData, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98896 次 |
| 最近记录: |