【问题标题】:Descendant non-generic class into Base generic class后代非泛型类到基本泛型类
【发布时间】:2009-12-28 15:07:12
【问题描述】:

在将派生对象传递给方法时,我通常使用接口或基类作为参数类型。 例如

Method1(ICar car);
Method2(BaseClass derivedClass);

但是当后代类不是泛型时,泛型基类呢?

public class GenericBaseClass<T> where T : BaseClass
{}

public class GenericDerivedClass1 : GenericBaseClass<DerivedClass1>
{}

我可以写类似的东西

Method3(GenericBaseClass<BaseClass> class);

但我无法将 GenericDerivedClass1 类型的对象传递给此方法。

有什么方法可以将我的后代类传递给这个方法吗?

【问题讨论】:

    标签: c# generics inheritance


    【解决方案1】:

    你需要让你的 Method3 通用:

    private void Method3<T>(GenericBaseClass<T> baseClass)
    {
    
    }
    

    然后你可以这样称呼它:

    Method3(new GenericDerivedClass1());
    

    【讨论】:

      【解决方案2】:

      一种解决方案是为您的泛型使用非泛型基类:

      abstract class GenericBaseClass
      {
      }
      
      public class GenericDerivedClass1<T> : GenericBaseClass where T : DerivedClass1
      {
      }
      

      另一种解决方案是使用this 文章中指出的接口。

      【讨论】:

        猜你喜欢
        • 2018-01-13
        • 1970-01-01
        • 1970-01-01
        • 2021-02-16
        • 2010-10-01
        • 2011-08-28
        • 2014-03-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多