如何在C#中使用重载算术运算符创建接口?
要像这样使用它:如何在C#中使用重载算术运算符创建接口?,c#,generics,C#,Generics,要像这样使用它: public class myClass <T> where T : IArithmetic //... public myFunction(T A, T B){ //... X = A + B; //... } 公共类myClass,其中T:IArithmetic //... 公共myFunction(T A、T B){ //... X=A+B; //... } 因此,我必须以某种方式重载T类的+运算符。无法创建此限制,因为运算符方法是
public class myClass <T> where T : IArithmetic
//...
public myFunction(T A, T B){
//...
X = A + B;
//...
}
公共类myClass,其中T:IArithmetic
//...
公共myFunction(T A、T B){
//...
X=A+B;
//...
}
因此,我必须以某种方式重载T类的+运算符。无法创建此限制,因为运算符方法是静态的,因此它们不属于实例。
如果T类型不支持所需的操作,您可以使用reflxion执行一些运行时检查,并抛出NotSupported Exction。这不可能为实现运算符创建接口 根据标准: 13.2接口成员 接口的成员必须是方法、属性、事件或索引器。一 接口不能包含常量、字段、运算符、实例 构造函数、析构函数或类型,接口也不能包含 任何类型的静态成员
Thx,James Gunt,reading,不能用泛型。。。这是一个令人沮丧的问题。我一直希望.NET提供这种功能。