zoukankan      html  css  js  c++  java
  • Unity 容器常见使用声景

    /*****************************************************/
    //Create Class With Interface Dependencies
    #region
    //需要某实现某接口的具体实例
    UnityContainer container=new UnityContainer();
    container.RegisterType(ILogger,NullLogger>();
    Database datavase = container.Resolve<CustomDatabase>Database();
    
    #endregion
    CustomDatabase的构造函数包含ILogger参数
    CustomDatabase(ILogger log){}
    
    /*****************************************************/
    //Create TypeMapping-Interface
    UnityContainer container=new UnityContainer();
    container.RegisterType(ILogger,NullLogger>();
    ILogger logger = container.Resolve<ILogger>();
    
    /*****************************************************/
    //Register Singleton
    UnityContainer container=new UnityContaier();
    container.RegisterType<Database,SqlDatabase>
    	(new ContainerControlledLifetimeManager());
    /*****************************************************/
    //Registering Named Instances
    UnityContainer container=new UnityContaier();
    container.RegisterType<Database,SqlDatabase>("SQL");
    container.RegisterType<Database,OracleDatabase>("ORACLE");
    
    IEnumerable<Database> databases = container.ResolveAll<Database>(); //Return All named instances
    Database database = container.Resolve<Database>("SQL");
    /*****************************************************/
    //Register Existing Intance 
    //Registering Named Instances
    UnityContainer container=new UnityContaier();
    container.RegisterInstance<Database>(new SqlDatabase());	//注册instance,Unity认为它是Singleton
    container.RegisterInstance<Database>("ORACLE",new OracleDatabase());
    
    Database database = container.Resolve<Database>("ORACLE");
    
    /*****************************************************/
    //Buildup Existing Instace
    UnityContainer container=new UnityContainer();
    container.RegisterType(ILogger,NullLogger>();
    
    DB2Database existingDatabase = new DB2Database();
    
    container.BuildUp(existingDatabase);		//创建引用关系
    container.RegisterInstance<Database>(existingDatabase);
    
    Database database = container.Resolve<Database>();
    
    //-----
    public class DB2Database:Database{
    	[Dependency]
    	public ILogger Logger{get;set}
    }
    /*****************************************************/
    // Configure Container via Config File
    UnityContainer _contaier=new UnityContaier();
     UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
    section.Configure(_container); // Unnamed <container> element
    
    ICustomerDataSource datasource=_container.Resolve<ICustomerDataSource>();
    
    /*****************************************************/
    container.Configure<InjectedMembers>()
    	.ConfigureInjectionFor<GenericDatabase>(
    		new ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString
    		new InjectionProperty("Logger")
    	);
    Database database=container.Resolve<Database>();
    /*****************************************************/
    //NestedContainers 父子容器,适用于,有公共容器。树型结构的容器o
    UnityContainer parentContainer  = new UnityContaier();
    IUnityContaier childContainer1 = parentContaier.CreateChildContainer();
    IUnityContaier childContainer2 = parentContaier.CreateChildContainer();
    /...
    

      

  • 相关阅读:
    HDU 1009 FatMouse' Trade
    HDU 2602 (简单的01背包) Bone Collector
    LA 3902 Network
    HDU 4513 吉哥系列故事——完美队形II
    LA 4794 Sharing Chocolate
    POJ (Manacher) Palindrome
    HDU 3294 (Manacher) Girls' research
    HDU 3068 (Manacher) 最长回文
    Tyvj 1085 派对
    Tyvj 1030 乳草的入侵
  • 原文地址:https://www.cnblogs.com/wucg/p/2229728.html
Copyright © 2011-2022 走看看