c# - 通用类和简化约束?

标签 c# generics

假设我有一个通用接口(interface) IFace<T, U> . TU可以通过一些额外的方式进行约束,但我认为这与问题无关。

我想创建一个新的通用类 GenClass具有以下定义:

class GenClass<T> where T: IFace

即我想告诉编译器 GenClass应该处理 IFace 的任何实现不指定通用类型。

这可能吗,还是我需要指定 TU通用参数?

我试过写 IFace以及IFace<>IFace<,> ,但编译器总是不合适 - 所以我认为这是不可能完成的。不过,也许我的做法有误?

最佳答案

Is this possible, or do I NEED to specify the T and U generic parameters?

恐怕你需要它们。你需要有

class GenClass<T, TX, TY> where T : IFace<TX, TY>

这是假设您不能创建通用接口(interface)派生的非通用 IFace 接口(interface) - 这通常是最简单的方法:

public interface IFace
{
    // Include anything that doesn't need the type parameters here
}

public interface IFace<T1, T2> : IFace
{
    // Include anything that needs the type parameters here
}

然后您可以:

class GenClass<T> where T : IFace

因为现在非通用接口(interface)确实存在。

关于c# - 通用类和简化约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45006764/

相关文章:

c# - LINQ to SQL where in(lambda语法)

C# WPF - 如何在 ListView 中拥有复选框?

ios - Swift 泛型函数问题。减少重复代码

c# - 每次使用innerHTML或jquery html()渲染页面的一部分时如何防止页面滞后/挂起

c# - 无效的对象名称 'dbo.CategoryIdArray'

c# - 将 foreach 循环转换为 linq 代码

java - 从java中的抽象项类访问通用容器

java - 读取Java泛型类的注解

Java 泛型类向外部抛出异常

c# - 强制实现类使用它们自己的类型作为方法参数的类型