Unity 容器常見使用聲景

來源:互聯網
上載者:User
/*****************************************************///Create Class With Interface Dependencies#region//需要某實現某介面的具體執行個體UnityContainer container=new UnityContainer();container.RegisterType(ILogger,NullLogger>();Database datavase = container.Resolve<CustomDatabase>Database();#endregionCustomDatabase的建構函式包含ILogger參數CustomDatabase(ILogger log){}/*****************************************************///Create TypeMapping-InterfaceUnityContainer container=new UnityContainer();container.RegisterType(ILogger,NullLogger>();ILogger logger = container.Resolve<ILogger>();/*****************************************************///Register SingletonUnityContainer container=new UnityContaier();container.RegisterType<Database,SqlDatabase>(new ContainerControlledLifetimeManager());/*****************************************************///Registering Named InstancesUnityContainer container=new UnityContaier();container.RegisterType<Database,SqlDatabase>("SQL");container.RegisterType<Database,OracleDatabase>("ORACLE");IEnumerable<Database> databases = container.ResolveAll<Database>(); //Return All named instancesDatabase database = container.Resolve<Database>("SQL");/*****************************************************///Register Existing Intance //Registering Named InstancesUnityContainer container=new UnityContaier();container.RegisterInstance<Database>(new SqlDatabase());//註冊instance,Unity認為它是Singletoncontainer.RegisterInstance<Database>("ORACLE",new OracleDatabase());Database database = container.Resolve<Database>("ORACLE");/*****************************************************///Buildup Existing InstaceUnityContainer 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 FileUnityContainer _contaier=new UnityContaier(); UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");section.Configure(_container); // Unnamed <container> elementICustomerDataSource datasource=_container.Resolve<ICustomerDataSource>();/*****************************************************/container.Configure<InjectedMembers>().ConfigureInjectionFor<GenericDatabase>(new ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionStringnew InjectionProperty("Logger"));Database database=container.Resolve<Database>();/*****************************************************///NestedContainers 父子容器,適用於,有公用容器。樹型結構的容器oUnityContainer parentContainer  = new UnityContaier();IUnityContaier childContainer1 = parentContaier.CreateChildContainer();IUnityContaier childContainer2 = parentContaier.CreateChildContainer();/...

  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.