C# 如何创建将泛型类作为其泛型类型的泛型类?

C# 如何创建将泛型类作为其泛型类型的泛型类?,c#,generics,C#,Generics,基本上,我想为所有ICollection类型编写一个包装器。我们称之为DelayedAddCollection。它应该以任何ICollection作为其名称 此外,我需要访问该ICollection类型的泛型类型,因为Add方法需要将其参数限制为该类型 我想象的语法是这样的 public DelayedAddConnection<T>: where T:ICollection<U> { .... public void Add(U element){

基本上,我想为所有ICollection类型编写一个包装器。我们称之为DelayedAddCollection。它应该以任何ICollection作为其名称

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

我想象的语法是这样的

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

   public void Add(U element){
     ...
   }
}
public DelayedAddConnection:其中T:ICollection{
....
公共无效添加(U元素){
...
}
}

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

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

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

}
公共类DelayedAddConnection,其中T:ICollection
{
}

因此,为了便于将来参考,我在所有建议和意见的帮助下实施的这个想法的最终、最干净的版本是:

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

    ICollection<U> collection;


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

    ...
public类DelayedUpdateCollection:ICollection
{
i收集;
公共延迟更新集合(ICollection coll){
集合=coll;
}
...

t谢谢,这让我抓狂:)@user430788-你有什么理由需要集合的类型,而不仅仅是
ICollection
?我需要集合类型,因为我在内部实例化了它。但是通过这种方式实现了它,我想我可以在构造函数中传递它,它会更干净,所以ks。。。