protected override void Act()
        {
            base.Act();

            var cloner = new ConfigurationSectionCloner();
            clonedSection = (UnityConfigurationSection)cloner.Clone(Section);
        }
 /// <summary>
 /// Set the set of aliases to use for resolution.
 /// </summary>
 /// <param name="section">Configuration section containing the various
 /// type aliases, namespaces and assemblies.</param>
 public static void SetAliases(UnityConfigurationSection section)
 {
     impl = new TypeResolverImpl(
         section.TypeAliases.Select(e => new KeyValuePair<string, string>(e.Alias, e.TypeName)),
         section.Namespaces.Select(e => e.Name),
         section.Assemblies.Select(e => e.Name));
 }
Exemple #3
0
        public static void SetAliases(UnityConfigurationSection section)
        {
            Microsoft.Practices.Unity.Utility.Guard.ArgumentNotNull(section, "section");

            impl = new TypeResolverImpl(
                section.TypeAliases.Select(e => new KeyValuePair<string, string>(e.Alias, e.TypeName)),
                section.Namespaces.Select(e => e.Name),
                section.Assemblies.Select(e => e.Name));
        }
        protected override void Arrange()
        {
            base.Arrange();

            var configurationFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "unity.config");
            var source = new FileConfigurationSource(configurationFilePath);
            sectionToClone = (UnityConfigurationSection)source.GetSection("unity");

            //editableSection = (UnityConfigurationSection)base.UnitySectionViewModel.ConfigurationElement;
            //editableSection.TypeAliases.Add(new AliasElement("alias1", typeof(int))); 
            //editableSection.TypeAliases.Add(new AliasElement("alias2", typeof(string)));

            //editableSection.Containers.Add(new ContainerElement()
            //{
            //    Name = "cloned",
            //    Registrations = {{
            //    new RegisterElement
            //    {
            //        Name = "Registration1",
            //        TypeName = "RegistrationTypeName",
            //        InjectionMembers = {{
            //                            new PropertyElement 
            //                            {
            //                                Name = "Property1",
            //                                Value = new ValueElement
            //                                {
            //                                    Value = "PropertyValue"
            //                                }
            //                            }
            //                         },
            //                         {
            //                             new ConstructorElement 
            //                             {
            //                                 Parameters = 
            //                                 {{
            //                                      new ParameterElement
            //                                      {
            //                                          Name = "array",
            //                                          Value = new ArrayElement
            //                                          {
            //                                              TypeName = "t",
            //                                              Values = {{new ArrayElement()},{new ValueElement
            //                                                                             {
            //                                                                                 Value = "v"
            //                                                                             }}}
            //                                          }
            //                                      }
            //                                 }}
            //                             }
            //                         }}
            //    }}}
            //});


            cloner = new ConfigurationSectionCloner();
        }
Exemple #5
0
        /// <summary>Registers the type mappings with the Unity container.</summary>
        /// <param name="container">The unity container to configure.</param>
        /// <remarks>There is no need to register concrete types such as controllers or API controllers (unless you want to
        /// change the defaults), as Unity allows resolving a concrete type even if it was not previously registered.</remarks>
        public static void RegisterTypes(IUnityContainer container)
        {
            // NOTE: To load from web.config uncomment the line below. Make sure to add a Microsoft.Practices.Unity.Configuration to the using statements.
            // container.LoadConfiguration();

            string moduleFilePath = AppDomain.CurrentDomain.RelativeSearchPath;

            var assemblyTypeMappings = LoadAssemblies(moduleFilePath,
                                                      MarkelConfiguration.ModuleFilter, MarkelConfiguration.TypeFilter, MarkelConfiguration.LoadModuleConfigFiles);

            var registerTypeList = AllClasses.FromLoadedAssemblies().Where(t => !string.IsNullOrEmpty(t.Namespace) &&
                                                                           (t.Namespace.StartsWith("Markel.") || t.Namespace.StartsWith("Markel.Service")) &&
                                                                           (
                                                                               t.Name.EndsWith("Manager") || t.GetInterfaces().Contains(typeof(IBaseManager)) ||
                                                                               t.Name.EndsWith("Repository") ||
                                                                               t.Name.EndsWith("Provider") ||
                                                                               t.Name.EndsWith("Factory") ||
                                                                               t.Name.EndsWith("DbContext") /*|| t.Name.EndsWith("Logger")*/
                                                                           )
                                                                           ).OrderBy(k => k.Name).ToList();

            //ETM_FIX: Regex is not working for matching type names, but the match works in poc. Once resolved this file can be moved to Markel.Pricing.Infrastructure
            Regex registerTypeRegex = (string.IsNullOrEmpty(MarkelConfiguration.RegisterTypeFilter)) ? null : new Regex(MarkelConfiguration.RegisterTypeFilter);
            var   registerTypeList2 = AllClasses.FromLoadedAssemblies()
                                      .Where(t => !string.IsNullOrEmpty(t.Namespace) && registerTypeRegex != null && registerTypeRegex.IsMatch(t.Namespace) == true)
                                      .ToList();

            container.RegisterTypes(registerTypeList, WithMappings.FromMatchingInterface, WithName.Default, WithLifetime.Hierarchical);

            UnityConfigurationSection unitySection = (UnityConfigurationSection)ConfigurationManager.GetSection(MarkelConfiguration.UnityConfigSectionName);

            unitySection.Configure(container, MarkelConfiguration.UnityContainerName);

            //container.RegisterTypes(registerTypeList, WithMappings.FromMatchingInterface, WithName.Default, WithLifetime.Hierarchical);

            // Below line allows mapping of interface to multiple types (use instead of above line
            //container.RegisterTypes(registerTypeList, WithMappings.FromAllInterfaces, WithName.TypeName, WithLifetime.Transient);

            //ETM_VERIFY: That we do not need to register the types because they are being registered above.
            //Register the dependencies found when loading assemblies.
            //foreach (var mapping in assemblyTypeMappings)
            //{
            //    container.RegisterType(mapping.Key, mapping.Value, new TransientLifetimeManager());
            //}

            ServiceLocator.SetLocatorProvider(() => new UnityServiceLocator(container));
        }
        public UnityControllerFactory()
        {
            container = new UnityContainer();

            var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
                                  where typeof(IController).IsAssignableFrom(t)
                                  select t;

            foreach (Type t in controllerTypes)
            {
                container.RegisterType(t, t.FullName);
            }

            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Configure(container);
        }
        public static void RegisterTypes()
        {
            UnityConfig.container = new UnityContainer();
            UnityConfigurationSection unityConfigurationSection = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;
            bool flag = unityConfigurationSection == null;

            if (flag)
            {
                throw new ConfigurationErrorsException("Web.Config没有找到Unity配置!");
            }
            foreach (ContainerElement current in unityConfigurationSection.Containers)
            {
                unityConfigurationSection.Configure(UnityConfig.container, current.Name);
            }
            Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType <IControllerFactory, UnityControllerFactory>(UnityConfig.container, new InjectionMember[0]);
            DependencyResolver.SetResolver(new UnityDependencyResolver(UnityConfig.container));
        }
Exemple #8
0
        public void InitUnityContainer()
        {
            IUnityContainer           container = new UnityContainer();
            UnityConfigurationSection section   = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            container.LoadConfiguration(section, "VilinContainer");

            //IUnityContainer container = new UnityContainer();
            //var fileMap = new ExeConfigurationFileMap ();
            //fileMap.ExeConfigFilename = Server.MapPath("Unity.config");
            //从config文件中读取配置信息
            //Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            //获取指定名称的配置节
            //UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
            //载入名称为FirstClass 的container节点
            //container.LoadConfiguration(section, "VilinContainer");
        }
Exemple #9
0
        protected void Page_Load(object sender, EventArgs e)
        {
            IUnityContainer           container = new UnityContainer();
            UnityConfigurationSection section   = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Configure(container);


            if (Request["user"] != null)
            {
                if (Request["user"].ToString().Equals("engineer"))
                {
                    int                      engineerid = Int32.Parse(Request["userid"]);
                    IEngineerBL              eservice   = container.Resolve <IEngineerBL>();
                    ICustomerBL              cservice   = container.Resolve <ICustomerBL>();
                    List <CustomerModel>     clist      = eservice.showMyCustomers(engineerid);
                    List <InstallationModel> ilist      = new List <InstallationModel>();
                    foreach (var item in clist)
                    {
                        ilist.AddRange(cservice.getInstallations(item));
                    }
                    StringBuilder str = new StringBuilder();
                    str.Append("<table border = '1'><tr><th>Id</th><th>Description</th></tr>");
                    foreach (var item in ilist)
                    {
                        str.Append("<tr><td>" + item.installationid + "</td><td>" + item.description + "</td><td><a href='InstallationDetail.aspx?installation=" + item.installationid + "&user=engineer&userid=" + engineerid + "'>Details</a></td></tr>");
                    }
                    str.Append("</table>");
                    divtable.InnerHtml = str.ToString();
                }
                else
                {
                    int         customerid         = Int32.Parse(Request["userid"]);
                    ICustomerBL cservice           = container.Resolve <ICustomerBL>();
                    List <InstallationModel> ilist = cservice.getInstallations(cservice.getCustomer(customerid));
                    StringBuilder            str   = new StringBuilder();
                    str.Append("<table border = '1'><tr><th>Id</th><th>Description</th></tr>");
                    foreach (var item in ilist)
                    {
                        str.Append("<tr><td>" + item.installationid + "</td><td>" + item.description + "</td><td><a href='InstallationDetail.aspx?installation=" + item.installationid + "&user=engineer&userid=" + customerid + "'>Details</a></td></tr>");
                    }
                    str.Append("</table>");
                    divtable.InnerHtml = str.ToString();
                }
            }
        }
Exemple #10
0
        /// <summary>
        /// 读取配置文件
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public static UnityContainer CreateObject(string name)
        {
            //产生容器
            UnityContainer uc = new UnityContainer();
            //把配置文件转换成文件对象
            ExeConfigurationFileMap ef = new ExeConfigurationFileMap();

            ef.ExeConfigFilename = @"D:\毕业项目\HRS\HRS\Unity.config";
            //将文件对象转换成配置对象             OpenMappedExeConfiguration:  指定客户端配置文件作为使用指定文件映射和用户级别的Configuration对象打开
            Configuration cf = ConfigurationManager.OpenMappedExeConfiguration(ef, ConfigurationUserLevel.None);
            //读取Unity配置文件的节点(业务逻辑层)
            UnityConfigurationSection cs = cf.GetSection("unity") as UnityConfigurationSection;

            //从容器里加载业务逻辑层的配置块
            uc.LoadConfiguration(cs, name);
            return(uc);
        }
        /// <summary>
        /// 初始化UnitContainer
        /// </summary>
        void InitIocContainer()
        {
            UnityConfigurationSection section = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection;

            if (section == null)
            {
                var rootPath = AppDomain.CurrentDomain.BaseDirectory;
                ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
                {
                    ExeConfigFilename = String.Format("{0}/unity.config", rootPath)
                };
                Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
                section = (UnityConfigurationSection)config.GetSection(UnityConfigurationSection.SectionName);
            }
            container = new UnityContainer();
            section.Configure(container, UnityConfigurationSection.SectionName);
        }
Exemple #12
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);

            XmlConfigurator.Configure();

            IUnityContainer           container = new UnityContainer();
            UnityConfigurationSection section
                = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Configure(container, "main");

            DependencyResolver.SetResolver(new UnityDependencyResolver(container));
        }
Exemple #13
0
        public static config_file_first_kind_IBLL Create_config_file_first_kind_BLL()
        {
            UnityContainer ioc = new UnityContainer();
            //把Unity文件转换为文件对象
            ExeConfigurationFileMap ef = new ExeConfigurationFileMap();

            ef.ExeConfigFilename = @"D:\AProject\HR\HR\Unity.config";
            //把文件对象转换为配置对象
            Configuration cf = ConfigurationManager.OpenMappedExeConfiguration(ef, ConfigurationUserLevel.None);
            //读取Unity节点(业务逻辑层的块)
            UnityConfigurationSection cs = (UnityConfigurationSection)cf.GetSection("unity");

            //容器里加载业务逻辑层的配置块
            ioc.LoadConfiguration(cs, "containerOne");
            //根据配置文件的name来定位对象
            return(ioc.Resolve <config_file_first_kind_IBLL>("config_file_first_kind_BLL"));
        }
Exemple #14
0
        public static void RegisterTypes(IUnityContainer container)
        {
            container.RegisterType <IPhoneBookProvider, MemoryProvider>();

            UnityConfigurationSection unityConfig = null;

            try
            {
                unityConfig = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
            }
            catch (Exception) {; }

            if (unityConfig != null && unityConfig.Containers?.Count > 0)
            {
                container.LoadConfiguration();
            }
        }
Exemple #15
0
        static void Main(string[] args)
        {
            IUnityContainer _container = new UnityContainer();

            _container.AddNewExtension <Interception>();

            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Configure(_container, "containerOne");
            IApplication app = _container.Resolve <Application>();

            string s = app.Run();

            Console.WriteLine(s);

            Console.ReadLine();
        }
        static HHContainer()
        {
            container = new UnityContainer();

            ExeConfigurationFileMap map = new ExeConfigurationFileMap();


            string path = GlobalSettings.MapPath("~/Unity.config");

            map.ExeConfigFilename = path;

            System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

            UnityConfigurationSection section = (UnityConfigurationSection)config.GetSection("unity");

            section.Containers.Default.Configure(container);
        }
        private static void LoadConfig(IUnityContainer container, String filePath)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap()
            {
                ExeConfigFilename = filePath
            };

            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(
                fileMap,
                ConfigurationUserLevel.None);

            UnityConfigurationSection section = (UnityConfigurationSection)config.GetSection("unity");

            if (section.Containers.Default != null)
            {
                section.Containers.Default.Configure(container);
            }
        }
Exemple #18
0
        public IUnityContainer GetContainer(string containerName)
        {
            try
            {
                return(dic[containerName]);
            }
            catch (KeyNotFoundException)
            {
                IUnityContainer           untityContainer = new UnityContainer();
                UnityConfigurationSection section         = (UnityConfigurationSection)System.Configuration.ConfigurationManager.GetSection("unity");
                section.Configure(untityContainer, containerName);
                //untityContainer.AddNewExtension<InstanceFactoryContainerExtension>();

                dic[containerName] = untityContainer;

                return(untityContainer);
            }
        }
Exemple #19
0
        static void Main(string[] args)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

            fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config");//找配置文件的路径
            Configuration             configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            UnityConfigurationSection section       = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);

            IUnityContainer container = new UnityContainer();

            section.Configure(container, "HsfContainer");

            using (Ititle_itemsService service = container.Resolve <Ititle_itemsService>())
            {
                //var dd = hsf_OwnerService.Find<hsf_owner>("5c9a66ee-cb9b-4d70-8b67-592a425a5019");
                service.QueryWordsByTitleId("7231958396958525839");
            }
        }
Exemple #20
0
        internal void CanResolveTypeAliases()
        {
            UnityConfigurationSection section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;

            Assert.AreEqual(1, section.Containers.Count);

            UnityTypeResolver typeResolver = section.Containers[0].TypeResolver;

            Assert.IsNotNull(typeResolver);

            Type alias = typeResolver.ResolveType("ILogger");

            Assert.AreSame(typeof(ILogger), alias);

            Type fullName = typeResolver.ResolveType("Microsoft.Practices.Unity.TestSupport.MockLogger, TestSupport.Unity");

            Assert.AreSame(typeof(MockLogger), fullName);
        }
Exemple #21
0
        public static T Resolve <T>()
        {
            //读取Unity.config配置文件
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

            fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Unity.config");

            Configuration             configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            UnityConfigurationSection section       = (UnityConfigurationSection)configuration.GetSection("unity");

            //创建仓库,映射对象
            IUnityContainer container = new UnityContainer();

            container.LoadConfiguration(section, "UserContainer");
            //section.Configure(container, "UserContainer");

            return(container.Resolve <T>());
        }
Exemple #22
0
        private void Setup()
        {
            _container = new UnityContainer();

            UnityConfigurationSection section =
                (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            foreach (UnityContainerElement containerConfig in section.Containers)
            {
                containerConfig.Configure(_container);
            }
            var webContextLifetimeManager = new WebContextLifetimeManager();

            _container.RegisterAssembly(typeof(ICategoryRepository).Assembly,
                                        typeof(CategoryRepository).Assembly,
                                        webContextLifetimeManager);
            _container.RegisterType <Domain.NorthwindEntities, Domain.NorthwindEntities>(webContextLifetimeManager, new InjectionConstructor());
        }
Exemple #23
0
 static void Print()
 {
     #region 引入Unity容器,这是一段固定写法 作用是读取当前应用程序运行目录下的Unity.Config配置文件,配置一个容器
     //1. 初始化UnityContainer容器
     IUnityContainer         container = new UnityContainer();
     ExeConfigurationFileMap fileMap   = new ExeConfigurationFileMap();
     //2. 开始读取配置文件
     fileMap.ExeConfigFilename = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "CfgFiles\\Unity.Config");
     Configuration             configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
     UnityConfigurationSection configSection = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
     #endregion
     //01 使用UnityConfigurationSection 配置(容器,名称)方法代替  配置容器 将容器和配置文件中的别名关联"
     configSection.Configure(container, "aopContainer");
     //02 通过容器创建对象
     Itest processor = container.Resolve <Itest>();
     //02 调用业务方法
     processor.show();
 }
        /// <summary>
        /// Initializes the unity container.
        /// </summary>
        /// <param name="containerName">Name of the container.</param>
        /// <param name="unityContainerExtension">Optionally, a unity container extension you might want to register</param>
        /// <returns>Unity container.</returns>
        public static IUnityContainer InitializeContainer(string containerName, UnityContainerExtension unityContainerExtension = null)
        {
            if (Container == null)
            {
                Container = new UnityContainer();

                if (unityContainerExtension != null)
                {
                    Container.AddExtension(unityContainerExtension);
                }
            }

            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName);

            section.Configure(Container, containerName);

            return(Container);
        }
Exemple #25
0
        static void Main(string[] args)
        {
            //IUnityContainer container = new UnityContainer();
            //container.AddNewExtension<Interception>();
            //container.RegisterType<ILogger, Logger>();
            //container.Configure<Interception>().SetInterceptorFor<ILogger>(new InterfaceInterceptor());

            IUnityContainer           container = new UnityContainer();
            UnityConfigurationSection section   = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Containers["ConfigureInterceptorForType"].Configure(container);


            var logger = container.Resolve <ILogger>();

            logger.Write("World.");
            Console.ReadKey();
        }
        protected override void Arrange()
        {
            base.Arrange();

            var ctor = new ConstructorElement();
            ctor.Parameters.Add(
                new ParameterElement
                {
                    Name = "dependencyParameter",
                    Value = new DependencyElement {Name = "dep1"}
                });

            ctor.Parameters.Add(
                new ParameterElement
                {
                    Name = "valueParameter",
                    Value = new ValueElement
                    {
                        Value = "123",
                        TypeConverterTypeName = "IntConverter"
                    }
                });

            ctor.Parameters.Add(
                new ParameterElement
                {
                    Name = "optionalParameter",
                    Value = new OptionalElement()
                });

            var registration = new RegisterElement
            {
                TypeName = "MyType"
            };

            registration.InjectionMembers.Add(ctor);

            var container = new ContainerElement();
            container.Registrations.Add(registration);

            Section = new UnityConfigurationSection();
            Section.Containers.Add(container);
        }
Exemple #27
0
        static void Main(string[] args)
        {
            #region 依赖了细节
            //using (OEMREntities dbcontext=new OEMREntities())
            //{
            //    OEMRSysDictionry sysDictionry = new OEMRSysDictionry();
            //    sysDictionry.DicCode = "BasicEleType";
            //    sysDictionry.DicName = "类型";
            //    sysDictionry.DicValue = "1";
            //    sysDictionry.DicShowValue = "文本";
            //    sysDictionry.DicIsValidity = "1";
            //    dbcontext.OEMRSysDictionry.Add(sysDictionry);
            //   OEMRTest test = new OEMRTest();
            //    test.Name = "111";
            //    //dbcontext.OEMRTest.Attach(test);
            //    dbcontext.OEMRTest.Add(test);
            //    dbcontext.SaveChanges();
            //}
            #endregion


            #region IOC+EF
            UnityConfigurationSection unity          = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName);
            UnityContainer            unityContainer = new UnityContainer();
            unity.Configure(unityContainer, "MyContainer");
            //unityContainer.AddExtension(new Diagnostic());
            //IBaseService sever = unityContainer.Resolve<IBaseService>();

            using (IBaseService sever = unityContainer.Resolve <IBaseService>())
            {
                //OEMRTest test = new OEMRTest();
                //test.Name = "111";
                //sever.Insert<OEMRTest>(test);
                //OEMRTest test= sever.Find<OEMRTest>(2);
                PageResult <OEMRTest> pageResult = sever.QueryPage <OEMRTest, int>(t => t.ID > 2, 3, 1, t => t.ID, true);
            }



            #endregion

            Console.Read();
        }
Exemple #28
0
        protected void Application_Start(object sender, EventArgs e)
        {
            Application.Lock();

            /*
             * We read the UnityConfigurationSection from the default
             * configuration file, and then populate the UnityContainer.
             */
            IUnityContainer container = new UnityContainer();

            UnityConfigurationSection section =
                (UnityConfigurationSection)ConfigurationManager.GetSection("unity");

            section.Containers.Default.Configure(container);

            Application["UnityContainer"] = container;

            Application.UnLock();
        }
        /// <summary>
        /// 加载配置和标注, 初始化容器中的类型映射
        /// </summary>
        protected void SetupContainer()
        {
            // 加载配置文件中unity节指定的配置
            UnityConfigurationSection section = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;

            if (section != null)
            {
                //section.Containers.Default.Configure(_container);//Use the UnityConfigurationSection.Configure(container, name) method instead
                section.Configure(_container, section.Containers.Default.Name);
            }

            // 从入口程序集当中查找接口映射关系标注, 向容器注册
            Assembly entryAssembly = Assembly.GetEntryAssembly();

            ConfigureByAttributesInAssembly(entryAssembly);

            // 加载配置文件中指定的模块程序集, 在其中查找接口映射关系标注, 向容器注册
            PackingSection packingSection = PackingSection.Content;

            if (packingSection != null)
            {
                IEnumerable <ModuleDefinition> modules =
                    PackingSection.Content.ModuleAssemblies;
                foreach (ModuleDefinition module in modules)
                {
                    string assemblyString = module.Name;
                    ConfigureWithModule(assemblyString);
                }
            }

            // 除了静态标注之外, 为模块提供另一个自定义容器配置的扩展机会.
            // 如果已加载的模块注册了 IContainerInitializer 接口的命名实现,
            // 它们将在此被调用.
            // 模块实现者可从接口的 InitContainer 方法参数中获取当前容器的引用,
            // 从而可以调用 IContainer API 对容器进行配置.
            IEnumerable <IContainerInitializer> initializers =
                _container.ResolveAll <IContainerInitializer>();

            foreach (IContainerInitializer initializer in initializers)
            {
                initializer.InitContainer(this);
            }
        }
Exemple #30
0
        static void Main(string[] args)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

            fileMap.ExeConfigFilename = "Unity.config";

            Configuration             configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            UnityConfigurationSection section       = (UnityConfigurationSection)configuration.GetSection("unity");

            IUnityContainer unityContainer = new UnityContainer();

            unityContainer.LoadConfiguration(section, "FirstClass");
            //section.Configure(unityContainer, "FirstClass");
            IClass classInfo1 = unityContainer.Resolve <IClass>("ec");
            IClass classInfo  = unityContainer.Resolve <IClass>();

            classInfo1.ShowInfo();
            classInfo.ShowInfo();
        }
Exemple #31
0
        /// <summary>
        /// Resolves the container.
        /// </summary>
        /// <param name="containerName">Name of the container.</param>
        static public void ResolveContainer(string containerName)
        {
            UnityHelper.InitializeContainer();
            lock (UnityHelper._resolvedContainers)
            {
                IDictionary <string, UnityContainerElement> resolvedContainers = UnityHelper._resolvedContainers;
                if (!resolvedContainers.ContainsKey(containerName))
                {
                    Boolean bContainerFound = false;
                    UnityConfigurationSection unityConfigurationSection = null;
                    foreach (UnityConfigurationSection section in UnityHelper._unityConfigurationSections.Values)
                    {
                        if (section.Containers[containerName] != null)
                        {
                            bContainerFound           = true;
                            unityConfigurationSection = section;
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }

                    UnityContainerElement unityContainerElement = null;
                    IUnityContainer       unityContainer        = null;
                    if (bContainerFound)
                    {
                        unityContainerElement = unityConfigurationSection.Containers[containerName];
                        unityContainer        = new UnityContainer();
                        unityContainerElement.Configure(unityContainer);
                        UnityHelper._unityContainers.Add(containerName, unityContainer);
                        resolvedContainers.Add(containerName, unityContainerElement);
                    }
                    else
                    {
                        unityContainer        = UnityHelper._unityContainers[containerName];
                        unityContainerElement = resolvedContainers[containerName];
                        unityContainerElement.Configure(unityContainer);
                    }
                }
            }
        }
Exemple #32
0
        /// <summary>
        /// Returns the Unity container, can throw Exception
        /// </summary>
        /// <param name="containerName">the name of the container to load</param>
        /// <returns>the core container</returns>
        static UnityContainer GetContainer(String containerName)
        {
            // load if neccessary
            if (Program.container == null)
            {
                try
                {
                    Program.container = new UnityContainer();
                    UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection(Program.SECTION_UNITY);
                    section.Configure(Program.container, containerName);
                }
                catch (Exception e)
                {
                    throw new Exception(string.Format("Error getting container {0}: {1}", containerName, e.ToString()));
                }
            }

            return(Program.container);
        }
Exemple #33
0
 /// <summary>
 /// 根據配置文件,加載Unity 容器
 /// </summary>
 /// <param name="configName"></param>
 /// <param name="sectionName"></param>
 /// <param name="containerName"></param>
 protected virtual void BuildFactory(string configName, string sectionName, string containerName)
 {
     try
     {
         this.Container = new UnityContainer();
         DirectoryInfo           i = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
         string                  configFilePath = Path.Combine(Path.Combine(i.FullName, ConfigurationManager.AppSettings["SOLUCTION_ROOT_PATH"]), configName);
         ExeConfigurationFileMap map            = new ExeConfigurationFileMap();
         map.ExeConfigFilename = configFilePath;
         Configuration             config       = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
         UnityConfigurationSection unitySection = config.GetSection(sectionName) as UnityConfigurationSection;
         this.Container.LoadConfiguration(unitySection, containerName);
     }
     catch (Exception ex)
     {
         string msg = ex.Message.ToString();
         throw ex;
     }
 }
Exemple #34
0
        public object GetInstance(System.ServiceModel.InstanceContext instanceContext, System.ServiceModel.Channels.Message message)
        {
            //UnityConfigurationSection unitySection = ConfigurationManager.GetSection("unity") as UnityConfigurationSection;

            //if (unitySection == null)
            //{
            //    throw new ConfigurationErrorsException(string.Format(CultureInfo.CurrentCulture, Resources.MissUnityConfiguration));
            //}

            //IUnityContainer container = new UnityContainer();

            //ContainerElement containerElement;
            //if (string.IsNullOrEmpty(this._containerName))
            //{
            //    containerElement = unitySection.Containers.Default;
            //}
            //else
            //{
            //    containerElement = unitySection.Containers[this._containerName];
            //}

            //unitySection.Configure(container);

            //UnityTypeElement[] unityTypeElements = Array.CreateInstance(typeof(UnityTypeElement), containerElement.GetType()) as UnityTypeElement[];
            //containerElement.GetType;

            //if (unityTypeElements.Where(element => element.type == this._contractType).Count() == 0)
            //{
            //    container.RegisterType(this._contractType, instanceContext.Host.Description.ServiceType);
            //}



            //return container.Resolve(this._contractType);

            IUnityContainer           container     = new UnityContainer();
            UnityConfigurationSection configuration = ConfigurationManager.GetSection(UnityConfigurationSection.SectionName) as UnityConfigurationSection;

            configuration.Configure(container, this._containerName);
            //注册契约接口与其对应的服务类
            container.RegisterType(this._contractType, instanceContext.Host.Description.ServiceType);
            return(container.Resolve(this._contractType));
        }
        /// <summary>
        /// init dependency container
        /// </summary>
        /// <param name="dependencyFile">Dependency config file</param>
        /// <param name="containerName">Dependency conainer name</param>
        private void InitContainer(string dependencyFile, string containerName)
        {
            string currentContainerKey = GetDependencyKey(dependencyFile, containerName);

            if (!containers.ContainsKey(currentContainerKey))
            {
                lock (syncRoot)
                {
                    if (!containers.ContainsKey(currentContainerKey))
                    {
                        containers[currentContainerKey] = currentContainer = new UnityContainer();
                        UnityConfigurationSection section = null;
                        if (!string.IsNullOrEmpty(dependencyFile))
                        {
                            string dependencyFilePath = dependencyFile;
                            if (!System.IO.Path.IsPathRooted(dependencyFile))
                            {
                                dependencyFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dependencyFile);
                            }
                            if (File.Exists(dependencyFilePath))
                            {
                                ExeConfigurationFileMap map = new ExeConfigurationFileMap();
                                map.ExeConfigFilename = dependencyFilePath;
                                System.Configuration.Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
                                section = (UnityConfigurationSection)config.GetSection("unity");
                            }
                        }
                        else
                        {
                            section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
                        }
                        if (section != null)
                        {
                            section.Configure(currentContainer, containerName);
                        }
                    }
                }
            }
            else
            {
                currentContainer = containers[currentContainerKey];
            }
        }
 protected override void Act()
 {
     clonedSection = (UnityConfigurationSection) cloner.Clone(sectionToClone);
 }