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