gpt4 book ai didi

c# - 如何在 csharp 中做嵌套的通用类(如果这是合适的名称)

转载 作者:太空狗 更新时间:2023-10-29 18:08:54 25 4
gpt4 key购买 nike

我想创建一个如下类型的类

public class EnumerableDisposer<IEnumerable<IDisposable>>

但是它不让我这样声明。我也试过:

public class EnumerableDisposer<T> : IDisposable where T : IEnumerable<J> where J : IDisposable

但是编译器告诉我找不到类型/命名空间 J。

创建这个类需要做什么?

最佳答案

你需要做的:

public class EnumerableDisposer<T, J> : IDisposable 
where T : IEnumerable<J> where J : IDisposable
{
// Implement...

不幸的是,为了包装任何内部类型( IEnumerable<J> ,在您的代码中),您的“包装”类需要具有类型 J在通用定义中定义。此外,为了添加 IEnumerable<J>约束,你需要有其他类型 T .

话虽这么说,如果你想避免双重泛型类型规范,你总是可以按如下方式重做:

public class EnumerableDisposer<T> : IDisposable 
where T : IDisposable
{
public EnumerableDisposer(IEnumerable<T> enumerable)
{
// ...

这迫使您使用 IEnumerable<T> 构造它其中 T 是 IDisposable,具有单个泛型类型。由于您有效地添加了 IEnumerable<T>通过构造函数进行约束,这将与前一个选项一样起作用。唯一的缺点是您需要在构造时完成泛型,但考虑到名称,我怀疑这会很好...

关于c# - 如何在 csharp 中做嵌套的通用类(如果这是合适的名称),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3230569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com