C# 如何在csharp中嵌套泛型类(如果这是合适的名称)
我想创建以下类型的类C# 如何在csharp中嵌套泛型类(如果这是合适的名称),c#,generics,class,C#,Generics,Class,我想创建以下类型的类 public class EnumerableDisposer<IEnumerable<IDisposable>> 公共类EnumerableDisposer 但它不会让我这样宣布。我也试过: public class EnumerableDisposer<T> : IDisposable where T : IEnumerable<J> where J : IDisposable 公共类EnumerableDispos
public class EnumerableDisposer<IEnumerable<IDisposable>>
公共类EnumerableDisposer
但它不会让我这样宣布。我也试过:
public class EnumerableDisposer<T> : IDisposable where T : IEnumerable<J> where J : IDisposable
公共类EnumerableDisposer:IDisposable其中T:IEnumerable其中J:IDisposable
但是编译器告诉我找不到类型/名称空间J
创建此类我必须做什么?您需要执行以下操作:
public class EnumerableDisposer<T, J> : IDisposable
where T : IEnumerable<J> where J : IDisposable
{
// Implement...
这迫使您使用一个
IEnumerable
构造它,其中T是IDisposable,只有一个泛型类型。由于您通过构造函数有效地添加了IEnumerable
约束,因此它的功能与前面的选项相同。唯一的缺点是,您需要在构建时完成泛型,但鉴于其名称,我怀疑这将很好…您需要定义J
乙二醇
公共类EnumerableDispose:IDisposable
其中T:IEnumerable
其中J:IDisposable
最好是:
public class EnumerableDispose<T> : IEnumerable<T>, IDisposable
where T : IDisposable
{
public EnumerableDispose(IEnumerable<T> source)
{
// TODO: implement
}
}
公共类EnumerableDispose:IEnumerable,IDisposable
其中T:IDisposable
{
公共EnumerableDispose(IEnumerable源)
{
//TODO:实现
}
}
您可以通过添加额外的J
类型参数来完成此操作:
public class EnumerableDisposer<T, J> : IDisposable
where T : IEnumerable<J>
where J : IDisposable
公共类EnumerableDisposer:IDisposable
其中T:IEnumerable
其中J:IDisposable
请注意,这些T
和J
参数独立于外部类中的任何参数,即使它们具有相同的名称
public class EnumerableDispose<T> : IEnumerable<T>, IDisposable
where T : IDisposable
{
public EnumerableDispose(IEnumerable<T> source)
{
// TODO: implement
}
}
public class EnumerableDisposer<T, J> : IDisposable
where T : IEnumerable<J>
where J : IDisposable