我有一个用于反序列化XDocument
的扩展方法。
我在此方法中使用CarConfiguration
作为变量,但我有另一个类配置:
public static CarConfiguration Deserialize(this XDocument xdoc)
{
XmlSerializer serializer = new XmlSerializer(typeof(CarConfiguration));
using (StringReader reader = new StringReader(xdoc.ToString()))
{
CarConfiguration cfg = (CarConfiguration) serializer.Deserialize(reader);
return cfg;
}
}
class CarConfiguration
{
//car
}
class BikeConfiguration
{
//bike
}
所以,这里有两个问题:
我可以使用类名作为此方法的参数吗?像这样:
static CarConfiguration Deserialize(this XDocument xdoc, class classname) {
var serializer = new XmlSerializer(typeof(classname));
我是否可以针对所有必需类型(CarConfiguration
,BikeConfiguration
等)使此方法通用?我的意思是例如返回类型对输入类的依赖:
static <classname> Deserialize(this XDocument xdoc, class classname) {
答案 0 :(得分:4)
您问题中的关键字是1.234
,所以是的,您可以使用C# generics来完成此操作。例如:
generic
现在你这样称呼它:
public static T Deserialize<T>(this XDocument xdoc)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
using (StringReader reader = new StringReader(xdoc.ToString()))
{
T cfg = (T) serializer.Deserialize(reader);
return cfg;
}
}