我编写这个方法是为了将 xml 字符串转换为对象:
private object Deserializer(Type type)
{
object instance = null;
try
{
XmlSerializer xmlSerializer = new XmlSerializer(type);
using (StringReader stringreader = new StringReader(somestring))
{
instance = (type)xmlSerializer.Deserialize(stringreader);
}
}
catch (Exception ex)
{
throw ex;
}
return instance;
}
但在这儿:
instance = (type)xmlSerializer.Deserialize(stringreader);
显示此错误:
找不到类型或命名空间名称“type”(您是否缺少 using 指令或程序集引用?)
我该如何修复它?
您无法强制转换为“类型”,您需要像这样指定确切的类型(对于字符串):
(string)xmlSerializer.Deserialize(stringreader);
也许考虑使用像这样的通用函数:
private T Deserializer<T>()
{
T instance = null;
try
{
var xmlSerializer = new XmlSerializer(typeof(T));
using (var stringreader = new StringReader(somestring))
{
instance = (T)xmlSerializer.Deserialize(stringreader);
}
}
catch (Exception ex)
{
throw ex;
}
return instance;
}
然后像这样调用该函数:
var instance = xmlSerializer.Deserialize<SomeType>();
如果您只想在运行时指定类型,您可以使用:
instance = Convert.ChangeType(xmlSerializer.Deserialize(stringreader), type);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)