可以说我有一个通用接口IFace<T, U>TU可以用其他一些方式来约束,但是我认为这与问题无关。

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

class GenClass<T> where T: IFace

即我想告诉编译器GenClass应该在不指定泛型类型的情况下处理IFace的任何实现。

这是否可能,或者我是否需要指定TU通用参数?

我试过编写IFace以及IFace<>IFace<,>,但是编译器总是很合适-所以我认为这无法完成。不过,也许我会以错误的方式进行操作?

最佳答案

这是可能的,还是我需要指定T和U通用参数?


恐怕您需要它们。你需要

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


假设您无法创建泛型接口派生的非泛型IFace接口-这通常是最简单的方法:

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


因为现在非类属接口确实存在。

10-07 20:33