asp.Netunityプロファイルによるioc diの実装

10180 ワード

nugetパッケージのダウンロード


Nuget: unity.configuration , unity ,unity.abstractions , unity.interception , unity.interception.configuration(これは必ずダウンロードしなければなりません.そうしないとプロファイルを読み取ることができません)

web


Webレイヤ(単一例で作成できますが、グローバルにはunityコンテナが1つしかありません)
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
  
            fileMap.ExeConfigFilename = "UNITY.Config";//        
            Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
            UnityConfigurationSection section = (UnityConfigurationSection)configuration.GetSection(UnityConfigurationSection.SectionName);
            IUnityContainer container = new UnityContainer();
            section.Configure(container, "kso");
            IUSERBLL ss = container.Resolve<IBLL.IUSERBLL>();
            ss.Show();
            Console.ReadKey();

bll層


Webはビジネス層やインタフェース層、dal層を引用します.そうしないとインスタンス化できません.
		 [Dependency] //        public      
        public Istudentdal Istudentd {
      get; set; }

        [InjectionConstructor]//       ,    ,       
        public USERBLL(IUSERDAL uSERDAL) {
     
            string usedal = uSERDAL.stu();
            uSERDAL.show(); Console.WriteLine("bll    cUSERBLL");
        }
        public void create()
        {
     
            Console.WriteLine("bll    create");
        }

        public void Show()
        {
     
            Istudentd.show();
            Istudentd.stushows(); Console.WriteLine("bll    USERBLL  Show");
        }

dal層


上と差が少なく、インタフェースと実装...省略
Webプロファイル

<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Unity.Configuration"/>
  </configSections>
  <unity>
    <sectionExtension type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationExtension, Unity.Interception.Configuration"/>
    <containers>

      <container name="kso">
        <register type="IBLL.IUSERBLL,IBLL" mapTo="BLL.USERBLL,BLL"/>
        <register type="IDAL.Istudentdal,IDAL" mapTo="DAL.studentdal,DAL"  />
        <register type="IDAL.IUSERDAL,IDAL" mapTo="DAL.USERDAL,DAL" />
      </container>
    </containers>
  </unity>
</configuration>