如何创建一个抽象class,然后拦截它的后代方法
How to create an abstract class, then intercept it's descendant method
我正在尝试将 "contracts" 与 "implementation" 分开。安全功能也是 "contracts"(除了这些功能具体工作原理的实现)。
所以我想写这样的东西:
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 属性(继承的)的唯一目的是在拦截器中进行检查。但是要成为"interceptable",方法必须是virtual,否则不能被Ninject包裹起来。而且我不能使重写方法成为虚拟方法。
我还能如何实现它?
这个方法默认是虚拟的。
只有标有"sealed"才限制.
如果您重写抽象方法 class - 该方法是虚拟的。如果来自界面 - 方法是 "virtual sealed",除非您将其标记为 "virtual"
我正在尝试将 "contracts" 与 "implementation" 分开。安全功能也是 "contracts"(除了这些功能具体工作原理的实现)。
所以我想写这样的东西:
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 属性(继承的)的唯一目的是在拦截器中进行检查。但是要成为"interceptable",方法必须是virtual,否则不能被Ninject包裹起来。而且我不能使重写方法成为虚拟方法。
我还能如何实现它?
这个方法默认是虚拟的。
只有标有"sealed"才限制.
如果您重写抽象方法 class - 该方法是虚拟的。如果来自界面 - 方法是 "virtual sealed",除非您将其标记为 "virtual"