如何创建一个泛型类,将泛型类作为泛型类?

时间:2013-09-09 19:09:24

标签: c# generics

基本上,我想为所有ICollection写一个包装器<>类型。让我们称之为DelayedAddCollection。它应该采用任何ICollection作为其。

此外,我需要访问该ICollection类型的泛型类型,因为Add方法需要将其参数限制为该类型。

我想象的语法看起来像这样...

public DelayedAddConnection<T>: where T:ICollection<U> {
   ....

   public void Add(U element){
     ...
   }
}

执行此操作的真正正确语法是什么?

2 个答案:

答案 0 :(得分:17)

您需要添加另一个泛型类型参数:

public class DelayedAddConnection<T, U> where T : ICollection<U>
{

}

答案 1 :(得分:0)

所以,为了将来参考,我实施的这个想法的最终,最干净的版本归功于所有的建议和评论是这样的:

public class DelayedUpdateCollection<U>: ICollection<U> 
{

    ICollection<U> collection;


    public DelayedUpdateCollection(ICollection<U> coll){
        collection = coll;
    }

    ...