.NET Unity IOC框架使用实例详解
程序员文章站
2023-02-21 15:42:59
.net unity ioc框架的使用实例,具体内容如下
1.ioc简介
ioc(inversion of control), 控制反转
di (dependen...
.net unity ioc框架的使用实例,具体内容如下
1.ioc简介
ioc(inversion of control), 控制反转
di (dependency injection),依赖注入
ioc的基本概念是:不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器负责将这些联系在一起。
2.unity引入
3.创建单例模式容器类
using microsoft.practices.unity; using microsoft.practices.unity.configuration; using system; using system.collections.generic; using system.configuration; using system.linq; using system.text; using system.threading.tasks; namespace unityioctest { /// <summary> /// unity ioc单例模式 /// </summary> public class unitysingleton { //单例 private static unitysingleton instance; //ioc容器 public iunitycontainer container; //获取单例 public static unitysingleton getinstance() { if (instance == null || instance.container == null) { string configfile = "unity.config"; var filemap = new execonfigurationfilemap { execonfigfilename = configfile }; //从config文件中读取配置信息 configuration configuration = configurationmanager.openmappedexeconfiguration(filemap, configurationuserlevel.none); //获取指定名称的配置节 unityconfigurationsection section = (unityconfigurationsection)configuration.getsection("unity"); instance = new unitysingleton() { //container = new unitycontainer().loadconfiguration((unityconfigurationsection)configurationmanager.getsection("unity"), "mycontainer") container = new unitycontainer().loadconfiguration(section, "mycontainer") //container = new unitycontainer() }; //instance.container.registertype<iexampleclass, exampleclass>(); } return instance; } //ioc注入实体 public static t getinstancedal<t>() { return getinstance().container.resolve<t>(); } } }
此处是将unity config配置单独成一个文件,方便管理。
4.添加ioc相关类
接口类
public interface iexampleclass { void dohelloword(); }
具体实现类
public class exampleclass : iexampleclass { public void dohelloword() { console.writeline("hello word!"); } }
实现类扩展
public class diexampleclass { //属性注入 [dependency] public iexampleclass example { get; set; } private iexampleclass testinject; public void dowork() { example.dohelloword(); testinject.dohelloword(); } //方法注入 [injectionmethod] public void initialize(iexampleclass instance) { testinject = instance; } }
5.添加配置文件unity.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configsections> <section name="unity" type="microsoft.practices.unity.configuration.unityconfigurationsection,microsoft.practices.unity.configuration" /> </configsections> <unity> <!--定义类型别名--> <aliases> <add alias="iexampleclass" type="unityioctest.iexampleclass,unityioctest" /> <add alias="exampleclass" type="unityioctest.exampleclass,unityioctest" /> </aliases> <!--容器--> <container name="mycontainer"> <!--映射关系--> <!--<register type="iexampleclass" mapto="exampleclass"></register>--> <register type="unityioctest.iexampleclass,unityioctest" mapto="unityioctest.exampleclass,unityioctest"></register> </container> </unity> </configuration>
6.函数调用
class program { static void main(string[] args) { //var dao = unitysingleton.getinstancedal<iexampleclass>(); var dao = unitysingleton.getinstancedal<diexampleclass>(); dao.dowork(); console.readline(); } }
7.结果显示
hello word!
hello word!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
.NET Unity IOC框架使用实例详解
-
asp.net分页控件使用详解【附实例下载】
-
unity(c# ioc框架) 使用总结
-
Vue.js框架路由使用方法实例详解
-
.Net项目中NLog的配置和使用实例详解
-
ASP.NET MVC如何使用Unity实现Ioc详解
-
YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解,yiicyii
-
YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解,yiicyii
-
YII Framework框架使用YIIC快速创建YII应用之migrate用法实例详解,yiicyii_PHP教程
-
分享在.Net中使用MongoDB的实例详解