我想知道是否有比本示例更优雅的方法将泛型用作泛型参数:

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使用更优雅的设计?

谢谢。

最佳答案

如果WrapperCollection<T>始终包含Wrapper<T>的集合,则可以执行以下操作:

public class WrapperCollection<TObject> : Collection<Wrapper<TObject>>
    where TObject : MyBaseClass
{
}

...

WrapperCollection<MyClass> collection = new WrapperCollection<MyClass>();

关于c# - 将通用类型用作通用参数的最优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3410859/

10-13 01:05