使用类名作为方法参数和返回类型

时间:2018-04-18 10:16:57

标签: c#

我有一个用于反序列化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 
}

所以,这里有两个问题:

  1. 我可以使用类名作为此方法的参数吗?像这样:

    static CarConfiguration Deserialize(this XDocument xdoc, class classname) {        
        var serializer = new XmlSerializer(typeof(classname));
    
  2. 我是否可以针对所有必需类型(CarConfigurationBikeConfiguration等)使此方法通用?我的意思是例如返回类型对输入类的依赖:

    static <classname> Deserialize(this XDocument xdoc, class classname) {
    

1 个答案:

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