泛型C#无拳击转换 - 无隐式转换

时间:2015-05-29 18:17:02

标签: c# generics inheritance abstract-class

我会尽量让它尽可能清楚!

最终目标是能够访问抽象类中的受保护方法。此方法也由抽象类继承。

抽象类有一个泛型,我需要我的类也是通用的(即创建一个通用适配器)。

这是抽象类(类似于结构的东西)。

public abstract class myAbstract<T> : ABaseClass<T> where T : SomeClass
{
}

这是抽象类继承的基类(具有我需要的方法)

public abstract class ABaseClass<T> : AnotherBase, IDisposable where T : SomeClass, SomeClass2
{
    protected void foo(T somevar);
}

上面的类在DLL中,我无权访问。

这就是我要做的事情,需要正确的帮助!

public MainClass<T> : myAbstract<T> where T : SomeClass
{
    public void somefunct()
    {
        this.foo(avariable);
    }
}

1 个答案:

答案 0 :(得分:1)

你的课应该看起来像这样:

//uncomment ", new()" if you want to create a new instance within the somefunct method
public class MainClass<T> : myAbstract<T> where T : SomeClass//, new()
{
   //you don't HAVE to pass param if you'd prefer to create it in the method
   public void somefunct(T param)
   {
       //uncomment this (and the ", new()" in the class declaration) 
       //if you want to create a new T instead of passing one in
       //var instance = new T();

       this.foo(param); //or use "instance" from above
   }
}