Ton*_*ony 3 c# aop cross-cutting-concerns simple-injector
我试图在我的控制器上拦截我的电话,但由于某种原因他们没有被截获.
我基本上试图让这里的例子起作用:http: //simpleinjector.readthedocs.org/en/latest/InterceptionExtensions.html
他们在拦截部分也有一些其他信息:http: //simpleinjector.readthedocs.org/en/latest/advanced.html
我有一种感觉,因为我没有正确设置容器.有人可以告诉我如何"Intercepted!!!"在控制器上的调用完成之后更改我的主要内容吗?此外,有人可以告诉我Container的设置是否错误,如果是,请解释我的错误.
代码:
static void Main()
{
Console.WriteLine("Start");
RedisController2 redisController = new RedisController2();
Container _container = new Container();
_container.InterceptWith<MonitoringInterceptor>(type => type == typeof(IRedisController2));
_container.RegisterSingle<MonitoringInterceptor>();
redisController.PrintSomething();
redisController.PrintOther();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
internal class MonitoringInterceptor : IInterceptor
{
public MonitoringInterceptor()
{
}
public void Intercept(IInvocation invocation)
{
invocation.Proceed();
//var decoratedType = invocation.InvocationTarget.GetType();
Console.Write("Intercepted!!!");
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是由于Container没有创建Controller,因此无法拦截对它的调用.试试这个:
Console.WriteLine("Start");
Container _container = new Container();
_container.Register<IRedisController2, RedisController2>(); // 1
_container.InterceptWith<MonitoringInterceptor>(type =>
type == typeof(IRedisController2));
_container.RegisterSingle<MonitoringInterceptor>();
IRedisController2 redisController =
_container.GetInstance<IRedisController2>(); // 2, 3
redisController.PrintSomething();
redisController.PrintOther();
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)
请注意,我有:
RedisController2为IRedisController2(因为IRedisController2已经为拦截配置了什么)| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |