チェックアウトthe Autofac wiki page on Autofac.Extras.DynamicProxy2。あなたのケースのために
var builder = new ContainerBuilder();
builder.RegisterType<SomeType>()
.As<ISomeInterface>()
.EnableInterfaceInterceptors();
builder.Register(c => new CallLogger(Console.Out));
var container = builder.Build();
var willBeIntercepted = container.Resolve<ISomeInterface>();
、単にインスタンスを登録するには、それを切り替える:それはインターセプタとしてラムダを登録CallLogger
インターセプターの一例を示しています。
var builder = new ContainerBuilder();
builder.RegisterType<SomeType>()
.As<ISomeInterface>()
.EnableInterfaceInterceptors()
.InterceptedBy(typeof(Aspect));
var interceptor = new Aspect();
builder.RegisterInstance(interceptor);
var container = builder.Build();
var willBeIntercepted = container.Resolve<ISomeInterface>();
また、アスペクトを入力したくない場合は、名前付きインターセプタを使用することもできます。再び
var builder = new ContainerBuilder();
builder.RegisterType<SomeType>()
.As<ISomeInterface>()
.EnableInterfaceInterceptors()
.InterceptedBy("my-aspect-instance");
var interceptor = new Aspect();
builder.RegisterInstance(interceptor)
.Named<IInterceptor>("my-aspect-instance");
var container = builder.Build();
var willBeIntercepted = container.Resolve<ISomeInterface>();
、
check out the wiki - ウィキ上のサンプルの名前の、型指定された、属性...多く含む傍受されるクラスでインターセプタを関連付ける方法はたくさん、あります。
Thx多く、これは役立ちます。 – Maris