如何指定BaseType <any>?

时间:2016-08-06 19:06:33

标签: c# generics

我有一个WrapperBase<PocoBase>类来包装POCO对象并提供其他功能:

public class WrapperBase<T> 
where T : PocoBase

以及该基类之上的几个实现。

public class ButtonWrapper : WrapperBase<Button>
public class ZipperWrapper : WrapperBase<Zipper>

我正在尝试编写一个以WrapperBase<T>作为构造函数参数的类。

public class ThingDoer
   where T : PocoBase
{
    public ThingDoer(WrapperBase<T> wrapper)
    { 
    }
}

但无论我尝试什么,ThingDoer都需要T的定义:

new ThingDoer<Zipper>(zipperWrapper);  
// I don't care what T is... get rid of <Zipper>

我怎么能说“我不关心T是什么,因为我想要的所有功能都在WrapperBase”?

1 个答案:

答案 0 :(得分:2)

  

我怎么能说“我不关心T是什么,因为我想要的所有功能都在WrapperBase中”?

您可以定义一个接口IWrapperFunctionality,指定提供该功能的方法。让WrapperBase<T>实现该接口,并将其用作构造函数参数。

public ThingDoer(IWrapperFunctionality wrapper)
{ 
}