有没有办法要求方法结果尊重某个属性? 比如
interface MyInterface()
{
int MyMethod(int a, int b);
// i want that my int result is less then 10
}
我想在定义中强制执行这种请求。有可能吗?
答案 0 :(得分:2)
不幸的是,使用c#中的接口是不可能的。您可以让接口的调用者强制执行此操作,或者您使用抽象类:
abstract class MybaseClass()
{
protected virtual int MyMethodInternal(int a, int b){ //this method is not visible to the outside
// implementors override this
}
public sealed int MyMethod(int a, int b){ // users call this method
var res = MyMethodInternal(a,b);
if(res < 10)
throw new Exception("bad implementation!");
}
}
答案 1 :(得分:0)
不,那是不可能的。合同根本没有定义那种约束。
在编译时检查接口约束,编译器通常不能知道函数的返回值。