如何指定BaseType<;有>;吗

本文关键字:gt lt 何指定 BaseType | 更新日期: 2023-09-27 18:01:04

我有一个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中"?

如何指定BaseType<;有>;吗

我怎么能说"我不在乎t是什么,因为我想要的所有功能都在WrapperBase中"?

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

public ThingDoer(IWrapperFunctionality wrapper)
{ 
}