拦截基类的所有子方法

时间:2013-03-16 11:39:08

标签: c# inversion-of-control aop

我想知道在C#中是否可以使用以下内容:

基类:

public abstract AbstractClass { }

还有一些儿童班:

public class ConcreteClass : AbstractClass 
{
   public int SomeMethod(){}
}


public class ImplClass : AbstractClass 
{
   public int SomeOtherMethod(){}
}

是否可以拦截基类中(直接或间接)固有的所有类中的所有方法?

提前感谢

2 个答案:

答案 0 :(得分:1)

由于C#支持AOP,这可能是

Code injection throw attributes :使用反射来获取类的属性并调用所需的方法(常用)

Using IOC Frameworks这样的{p> Spring.Net可能是另一种选择。 (高级选项,使用第三方库)

ContextBound Objects approch :您可以从MarshalByRefObjectContextBoundObject继承您的课程并使用IMessageSink。 (艰难的方式)

可以找到一篇比较approches的好文章here

答案 1 :(得分:0)

这是可行的,如果您按照MSDN中的示例进行操作,您已经知道了,请参阅http://msdn.microsoft.com/en-us/library/sf985hc5%28v=vs.71%29.aspx

抽象方法具有以下特征:

抽象方法隐式地是虚方法。 抽象方法声明仅允许在抽象类中使用。 因为抽象方法声明没有提供实际的实现,所以没有方法体;方法声明只以分号结束,签名后面没有大括号({})。