所以最近我偶然发现了一个关于c#效率的youtube视频(我不确定我可以链接它),主要是为统一引擎游戏编写高效的代码。因此,在视频中的某个时刻,他展示了一个实现具有任意数量通用参数的接口的结构。这是一张图片来说明他的所作所为:
我试图复制的界面是IJobsProcess。所以我从他在视频中所说的内容得到的是接口可以采用任意数量的通用参数。总之,如何在c#中创建类似的界面? 如果我在这里说错了,请纠正我。
答案 0 :(得分:3)
您可以使用任意数量的generic parameters编写和实现界面。但是你不能用任意数量的通用参数编写接口。
以下是您的示例:
interface IService<T1, T2>
{
T1 GetValue();
T2 GetAnotherValue();
}
class MyClass : IService<string, int>
{
public int GetAnotherValue()
{
return 42;
}
public string GetValue()
{
return "Truth";
}
}
如上所述,通用参数的数量可以大于1,但该编号在编译时是固定的。
同样问题也是here和here。在这些问题中,提到了一些替代方案,其中使用其他常见的已知C#特征实现任意数量的类型参数:使用params关键字或传递array of types作为参数。