当EnableInterfaceInterceptors和AllowCircularDependencies时,Autofac DynamicProxy2 PropertiesAutowired无法正常工作

时间:2016-06-13 09:35:07

标签: c# autofac

我使用Autofac DynamicProxy2做AOP日志记录。 如果我这样注册:

builder.RegisterAssemblyTypes(assemblys.ToArray()).Where(t => t.Name.EndsWith("ServiceImpl"))
                .AsImplementedInterfaces()
                .InstancePerLifetimeScope()
                .PropertiesAutowired()
                .EnableInterfaceInterceptors()
                .InterceptedBy(typeof(LogInterceptor));
            ;

然后ValuesServiceImpl实例可以自动连接到属性,如下所示:

public class ValuesController : ApiController
    {
        public IValuesService ValuesService { get; set; }
    }

但如果我使用PropertiesAutowired( PropertyWiringOptions.AllowCircularDependencies

builder.RegisterAssemblyTypes(assemblys.ToArray()).Where(t => t.Name.EndsWith("ServiceImpl"))
                    .AsImplementedInterfaces()
                    .InstancePerLifetimeScope()
                    .PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies)
                    .EnableInterfaceInterceptors()
                    .InterceptedBy(typeof(LogInterceptor));
                ;

然后PropertiesAutowired无效,ValuesService属性为null。

在我的项目中,我必须允许循环依赖,我更喜欢使用EnableInterfaceInterceptors而不是EnableClassInterceptors

0 个答案:

没有答案