/// <summary> /// 注册BaseFoo 和 Autowried 相关服务 /// </summary> /// <param name="containerBuilder"></param> /// <param name="configuration"></param> public static void RegisterBllModule(this ContainerBuilder containerBuilder) { Assembly moduleAssembly = null; foreach (var module in AppDomain.CurrentDomain.GetAssemblies()) { moduleAssembly = null; moduleAssembly = module; //autowired class实现 var propertySelector = new AutowiredPropertySelector(); var typeAutowired = moduleAssembly.GetTypes().Where(t => t.GetCustomAttribute <AutowiredAttribute>() != null && !t.GetTypeInfo().IsAbstract); foreach (var t in typeAutowired) { var interceptor = t.GetCustomAttribute <AutowiredAttribute>().InterceptorType; var builder = containerBuilder.RegisterType(t); builder.PropertiesAutowired(propertySelector).InstancePerLifetimeScope(); //if (t.GetInterfaces().Count() > 0) //{ // builder.AsImplementedInterfaces(); //} //if (interceptor != null) //{ // builder.InterceptedBy(interceptor); // if (t.GetInterfaces().Count() > 0) // { // builder.EnableInterfaceInterceptors(); // } // else // { // builder.EnableClassInterceptors(); // } //} } } }
public static void RegisterBllModule(this ContainerBuilder containerBuilder, string dllName) { var basePath = AppContext.BaseDirectory; Assembly moduleAssembly = null; moduleAssembly = Assembly.LoadFrom(Path.Combine(basePath, dllName)); //autowired class实现 var propertySelector = new AutowiredPropertySelector(); var typeAutowired = moduleAssembly.GetTypes().Where(t => t.GetCustomAttribute <AutowiredAttribute>() != null && !t.GetTypeInfo().IsAbstract); foreach (var t in typeAutowired) { if (t.GetInterfaces().Count() == 0) { containerBuilder.RegisterType(t).PropertiesAutowired(propertySelector, false).SingleInstance(); } else { containerBuilder.RegisterType(t).AsImplementedInterfaces().PropertiesAutowired(propertySelector).SingleInstance(); } } }