.NET从String获取类名

时间:2016-06-03 11:56:43

标签: c# .net serialization reflection types

我需要使用这种方法:

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。

1 个答案:

答案 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);