定义一个类MyClass <t>或一个函数MyFunction <t>(T x)其中T只能由实现IMyInterface的类型</t> </t>

时间:2013-08-24 05:50:35

标签: c# metaprogramming

我想定义一个类MyClass<T>和一个非常特殊的函数MyFunc<T>,但我想强制T继承(以任何方式)接口或类。我们称之为IMyInterface

我对C#的了解允许我这样做的唯一方法是定义泛型类,检查它是否继承(例如,参见How do I check if a type is a subtype OR the type of an object?),否则抛出异常。

有没有办法在编译时强制执行此操作,而不是运行时?

1 个答案:

答案 0 :(得分:4)

通用类型约束:

public void MyFunc<T>() where T : IMyInterface {
}