Autofac.Extras.DynamicProxy2 v3.0.6 出现异常
Autofac.Extras.DynamicProxy2 v3.0.6 got a exception
我使用 Autofac.Extras.DynamicProxy2 来实现我的 AOP 策略。
我更新了 Autofac.Extras.DynamicProxy2 到 v3.0.6,我得到了一个例外:
The component Activator = LookupService (ReflectionActivator),
Services = [WordBook.Protocols.Logic.ILookupService], Lifetime =
Autofac.Core.Lifetime.CurrentScopeLifetime, Sharing = None, Ownership
= OwnedByLifetimeScope cannot use interface interception as it provides services that are not publicly visible interfaces. Check your
registration of the component to ensure you're not enabling
interception and registering it as an internal/private interface type.
这是我的源代码:
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<ExceptionInterceptor>();
builder.RegisterAssemblyTypes(Assembly.Load("WordBookLogics")).AsImplementedInterfaces().EnableInterfaceInterceptors();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
它适用于 Autofac.Extras.DynamicProxy2 v3.0.5.
更新时需要调整什么吗?
我想我找到了问题。
在Autofac.Extras.DynamicProxy2 v3.0.5中,RegistrationExtensions.cs的第300行有IsVisible条件。
但是,IsVisible 条件在 Autofac.Extras.DynamicProxy2 v3.0.6.
中被替换为 Assembly.IsInternalToDynamicProxy()
我的public接口的IsVisible 属性是真的,但是我在public接口上调用Assembly.IsInternalToDynamicProxy()的结果是假的。
所以,我的 public 接口是可见的,但它并不意味着 dynamicproxy 内部。
这就是我的拦截不起作用并在 Autofac.Extras.DynamicProxy2 v3.0.6.
中出现异常的原因
我只等 Autofac.Extras.DynamicProxy2 的所有者修复它。
我使用 Autofac.Extras.DynamicProxy2 来实现我的 AOP 策略。
我更新了 Autofac.Extras.DynamicProxy2 到 v3.0.6,我得到了一个例外:
The component Activator = LookupService (ReflectionActivator), Services = [WordBook.Protocols.Logic.ILookupService], Lifetime = Autofac.Core.Lifetime.CurrentScopeLifetime, Sharing = None, Ownership = OwnedByLifetimeScope cannot use interface interception as it provides services that are not publicly visible interfaces. Check your registration of the component to ensure you're not enabling interception and registering it as an internal/private interface type.
这是我的源代码:
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<ExceptionInterceptor>();
builder.RegisterAssemblyTypes(Assembly.Load("WordBookLogics")).AsImplementedInterfaces().EnableInterfaceInterceptors();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
它适用于 Autofac.Extras.DynamicProxy2 v3.0.5.
更新时需要调整什么吗?
我想我找到了问题。
在Autofac.Extras.DynamicProxy2 v3.0.5中,RegistrationExtensions.cs的第300行有IsVisible条件。
但是,IsVisible 条件在 Autofac.Extras.DynamicProxy2 v3.0.6.
中被替换为 Assembly.IsInternalToDynamicProxy()我的public接口的IsVisible 属性是真的,但是我在public接口上调用Assembly.IsInternalToDynamicProxy()的结果是假的。
所以,我的 public 接口是可见的,但它并不意味着 dynamicproxy 内部。
这就是我的拦截不起作用并在 Autofac.Extras.DynamicProxy2 v3.0.6.
中出现异常的原因我只等 Autofac.Extras.DynamicProxy2 的所有者修复它。