我试图让一个横切关注点拦截我在控制器上的调用,但由于某种原因,它们没有被拦截。
我基本上是想让这里的例子起作用: http ://simpleinjector.readthedocs.org/en/latest/InterceptionExtensions.html
他们在这里的拦截部分也有一些其他信息:http: //simpleinjector.readthedocs.org/en/latest/advanced.html
我有一种感觉,这是因为我没有正确设置容器。"Intercepted!!!"
有人可以告诉我在控制器上的调用完成后我需要如何更改我的 main吗?另外,有人可以告诉我容器的设置是否错误,如果是,请解释我的错误。
编码:
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();
}
}