如何创建一个抽象类,然后拦截它的后代方法

时间:2016-10-16 07:38:57

标签: c# ninject aop interceptor

我正试图将“合同”与“实施”分开。安全功能也是“合同”(除了实现这些功能究竟如何工作之外)。

所以我试着写这样的东西:

public abstract class SomeServiceContract
{
    [Authorize]
    public abstract void SomeMethod();
}

public class SomeServiceImpl : SomeServiceContract
{
    public override void SomeMethod()
    {
        // this can just be implemented, no need to worry about access rigts 
    }
}

要在拦截器中检查Authorize属性(继承)的唯一目的。但要成为“可拦截的”,方法必须是虚拟的,或者它不能被Ninject包装,例如。而且我无法将重写方法变为虚拟方法。

我还能怎样实现这个?

1 个答案:

答案 0 :(得分:0)

此方法默认为虚拟。

限制仅限于标有"密封"。

如果从抽象类重写方法 - 该方法是虚拟的。如果来自界面 - 该方法是"虚拟密封",除非您将其标记为"虚拟"