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>