2011-04-28 189 views
2

我非常有兴趣了解它是否可能截取属性以及方法?我发现一个很好的例子,似乎支持拦截方法,也可以拦截属性和事件呢?统一:拦截(AOP)拦截属性?并在表单上截取方法(winform)?

我想为我的应用程序编写一个AOP日志记录系统。

这里是例子:http://codetheorist.com/2011/04/interception-made-easy/

我给它一个尝试,设法得到它在一个类库工作,

如果我想获得它的的WinForms工作?我还需要从容器中解析表单,现实中的表单是一个类,但是我无法使用它。

任何人有任何想法,或已经做到了吗?

我的确注意到Aurum是Unity上的框架,但我认为如果可能的话我更愿意使用Unity扩展。

编辑

这就是我想为我的WinForms ....但它没有工作,其在Program.cs中

var form = UnityContainer.Container.Resolve<frmMain>(); 

///Application.Run(new frmMain()); // OLD 

Application.Run(form); // new using the resolved from unity.. It resolves it and i registered it ... 

回答

2

的属性只是一些方法额外的元数据,所以如果属性是虚拟的或者是接口的一部分,它可以被截取 - 就像任何其他虚拟方法一样。

+0

好吧,是与setters和getters,所以假设该方法不需要适应捕获属性...其他元数据?我需要检查这个吗? – Martin 2011-04-28 14:41:00

+2

实际上,由于System.Windows.Forms.Form继承自MarshalByRefObject,因此如果使用TransparentProxyInterceptor,则可以拦截任何内容,但不仅限于虚拟或接口方法。 – 2011-04-29 08:54:25