/// <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();
                    //    }
                    //}
                }
            }
        }
예제 #2
0
        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();
                }
            }
        }