asp.net unity配置文件实现ioc di

nuget 包下载

Nuget:
unity.configuration ,
unity ,unity.abstractions ,
unity.interception ,
unity.interception.configuration(这个一定要下载,不然没办法读取配置文件)

web

web层(可以做成单例,全局只有一个unity容器)

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>

你可能感兴趣的:(c#.net)