Type Interceptors

Type Interceptors

Castle.Core, part of the Castle Project, provides a method interception framework called “DynamicProxy.”

The Autofac.Extras.DynamicProxy integration package enables method calls on Autofac components to be intercepted by other components. Common use-cases are transaction handling, logging, and declarative security. You can use Autofac.Extras.DynamicProxy2 for Autofac versions up to 4.0.0

 

 

 builder.RegisterType<AdminWebProxyObject>().As<IAdminWebContract>().InstancePerLifetimeScope().EnableInterfaceInterceptors().InterceptedBy(typeof(BoAuditTraceInterceptor));

 

 

关于循环引用的问题

手动new的接口的实现类的实例,然后调用方法,不会触发intercept

假设有接口IA和一个IInterceptor的实现ChuckIntercept。

IA的实现通过autofac进行解析,在一个静态类B中。

interface IA

{

   string GetConnectionString();

}

class A : IA

{

}

class  B

{

public static IA InstanceA; //autofac负责resolve

}

 

ChuckIntercept : IIntercept

{

//如果在这里需要用到A里面的GetConnectionString方法

只能自己在这边new一个A的实例,不可以使用autofac的解析,否则会循环触发intercept方法

}

 

posted @ 2019-06-04 15:45  ChuckLu  阅读(201)  评论(0编辑  收藏  举报