我想使用 Autofac 探索自定义拦截器。我目前正在为 DynamicProxy 使用 Autofac 4.2.0 版和 CaSTLe.Core 3.3.3 版。
我从以下基本行为开始,想在 Autofac 中注册一个测试类及其接口(interface):
using Autofac;
using Castle.DynamicProxy;
class Program
{
static void Main(string[] args)
{
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<MyClassA>()
.As<IMyInterface>()
.EnableInterfaceInterceptors()
.InterceptedBy(typeof(MyInterceptor));
builder.RegisterType<MyInterceptor>().AsSelf();
var container = builder.Build();
}
}
问题是“.EnableInterfaceInterceptors()”行下面有一条红色错误波浪线,错误如下:
'IRegistrationBuilder<MyClassA, ConcreteReflectionActivatorData, SingleRegistrationStyle>' does not contain a definition for 'EnableInterfaceInterceptors' and no extension method 'EnableInterfaceInterceptors accepting a first argument of type 'IRegistrationBuilder<MyClassA, ConcreteReflectionActivatorData, SingleRegistrationStyleA>' could be found (are you missing a using directive or an assembly reference?)
到目前为止,其他组件的代码(如果相关)是:
public interface IMyInterface
{
void DoWork(string key1, string key2);
}
using System;
public class MyClassA : IMyInterface
{
public void DoWork(string key1, string key2)
{
Console.WriteLine(string.Format("A: {0} - {1}", key1, key2));
}
}
using System;
using Castle.DynamicProxy;
public class MyInterceptor : StandardInterceptor
{
protected override void PreProceed(IInvocation invocation)
{
Console.Write("PreProceed: ");
}
}
有人能告诉我为什么 .EnableInterfaceInterceptors()
请问不工作吗?
最佳答案
我猜你忘了引用 Autofac.Extras.DynamicProxy
包。 See the docs here.
关于c# - Autofac RegisterType 不提供 EnableInterfaceInterceptors,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40610000/