我想知道是否有比这个例子更优雅的方式将泛型类型用作通用参数:
public class Wrapper<TObject>
where TObject : MyBaseClass
{
}
public class WrapperCollection<TWrapper, TObject> : Collection<TWrapper>
where TWrapper : Wrapper<TObject>
where TObject : MyBaseClass
{
}
实际上,如果我想初始化WrapperCollection的一个实例,我会这样做:
WrapperCollection<Wrapper<MyClass>, MyClass> collection =
new WrapperCollection<Wrapper<MyClass>, MyClass>();
因为我对此并不满意,所以真正优雅的是能够像那样初始化它:
WrapperCollection<Wrapper<MyClass>> collection =
new WrapperCollection<Wrapper<MyClass>>();
所以我的问题很简单:有没有办法做到这一点,还是有更优雅的设计用于我的CollectionWrapper?
感谢。
答案 0 :(得分:1)
如果WrapperCollection<T>
总是包含Wrapper<T>
的集合,那么您可以这样做:
public class WrapperCollection<TObject> : Collection<Wrapper<TObject>>
where TObject : MyBaseClass
{
}
...
WrapperCollection<MyClass> collection = new WrapperCollection<MyClass>();