如果调用同一个类中的方法,如何在类中调用方法?
而不是这样做:
public class MyClass
{
private void InvokeMe() { }
public void Method1()
{
this.InvokeMe();
// some codes
}
public void Method2()
{
this.InvokeMe();
// some codes
}
public void Method3()
{
this.InvokeMe();
// some codes
}
// more methods
}
我想自动调用InvokeMe私有方法,而不是将它放在MyClass中的每个公共方法上,因为我们在该类中有太多方法,并且该类总是会更改。
我的代码在C#,Framework 4.0中,在Visual Studio 2010 Pro中构建。
请帮助,提前致谢。
答案 0 :(得分:5)
这可以使用一些Aspect编程来完成(看看PostSharp或其中一个替代方案)。或者,因为您使用的是.NET 4,所以可以创建DynamicObject实现以充当您的类的代理,并且当调用方法时,它会调用InvokeMe
方法第一。
更新
我已添加了上面DynamicObject
文档的链接以供进一步阅读。有一个很好的MSDN博客here讨论相关要点。
答案 1 :(得分:1)
Postsharp是一个选项,但它有一个“购买”按钮(除非你对他们的免费入门版感到满意)。
如果您正在寻找其他较便宜的选项,请尝试Ninject或Spring.NET。
在我的一些项目中,我完全按照你的描述使用了Ninject,它很容易使用。请注意,拦截(或面向方面编程)引入了一组新概念,因此需要注意这一点。
另请注意,仅仅因为它适用于我的项目并不意味着它适用于您的项目以及其他因素可能会影响您的选择。