【发布时间】:2018-03-14 01:59:40
【问题描述】:
我有以下课程:
public class MyTest
{
public void Test()
{
}
}
我创建了以下拦截器:
public class MyInterceptor : IInterceptor
{
public void Intercept(IInvocation invocation)
{
invocation.Proceed();
}
}
在我的代码中,我这样做了:
ProxyGenerator g = new ProxyGenerator();
g.CreateClassProxy<MyTest>(new MyInterceptor());
MyTest t = new MyTest();
t.Test();
不应该在调试器中使用 Intercept 方法吗?它不是。我错过了什么吗?
编辑:这是特定于 Castle DynamicProxy。
【问题讨论】:
-
重复stackoverflow.com/questions/28518700/…。您应该将
Test方法标记为virtual。 -
另外这个
MyTest t = new MyTest();没有使用任何代理,只是创建一个新对象。var t = g.CreateClassProxy<MyTest>(new MyInterceptor());- 这会创建一个代理对象,所以接下来你可以调用它的方法:t.Test();
标签: c# .net castle-dynamicproxy