我正试图将“合同”与“实施”分开。安全功能也是“合同”(除了实现这些功能究竟如何工作之外)。
所以我试着写这样的东西:
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包装,例如。而且我无法将重写方法变为虚拟方法。
我还能怎样实现这个?
答案 0 :(得分:0)
此方法默认为虚拟。
限制仅限于标有"密封"。
如果从抽象类重写方法 - 该方法是虚拟的。如果来自界面 - 该方法是"虚拟密封",除非您将其标记为"虚拟"