在Interfaces中声明的方法的约束

时间:2013-10-13 15:31:47

标签: c# .net

有没有办法要求方法结果尊重某个属性? 比如

interface MyInterface()
{
    int MyMethod(int a, int b);
    // i want that my int result is less then 10
}

我想在定义中强制执行这种请求。有可能吗?

2 个答案:

答案 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)

不,那是不可能的。合同根本没有定义那种约束。

在编译时检查接口约束,编译器通常不能知道函数的返回值。