我需要使用这种方法:
public T DeserializeFromXmlString<T>(string xmlString)
{
var serializer = new XmlSerializer(typeof(T));
using (TextReader reader = new StringReader(xmlString))
{
return (T)serializer.Deserialize(reader);
}
}
要使用它,我需要知道通用类型T.想象一下,我有一个类“Apple”。我将这样使用它:
var myapple= DeserializeFromXmlString<Apple>(someXmlString);
但我需要能够删除此<Apple>
并将其替换为其他东西,因为我有字符串“Apple”。
目标是转换字符串以便能够使用它在此方法中作为通用类型T。
答案 0 :(得分:2)
重新设计您的API以支持非一般情况:
public object DeserializeFromXmlString(Type targetType, string xmlString)
{
var serializer = new XmlSerializer(targetType);
using (TextReader reader = new StringReader(xmlString))
{
return serializer.Deserialize(reader);
}
}
public T DeserializeFromXmlString<T>(string xmlString)
{
return (T)DeserializeFromXmlString(typeof(T), xmlString);
}
从字符串加载类型并使用非泛型API:
var targetType = Type.GetType("YourTypeName", true);
var deserializedObj = DeserializeFromXmlString(targetType, yourXmlString);