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)); }
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(); }
/// <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)); }
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"); }
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(); } } }
/// <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); }
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)); }
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")); }
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(); } }
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); } }
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); } }
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"); } }
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); }
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>()); }
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()); }
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); }
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); }
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(); }
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); } }
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(); }
/// <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); } } } }
/// <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); }
/// <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; } }
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); }