使用MicrosoftPracticesUnity 依赖注入Word下载.docx

上传人:b****7 文档编号:22075180 上传时间:2023-02-02 格式:DOCX 页数:10 大小:16.11KB
下载 相关 举报
使用MicrosoftPracticesUnity 依赖注入Word下载.docx_第1页
第1页 / 共10页
使用MicrosoftPracticesUnity 依赖注入Word下载.docx_第2页
第2页 / 共10页
使用MicrosoftPracticesUnity 依赖注入Word下载.docx_第3页
第3页 / 共10页
使用MicrosoftPracticesUnity 依赖注入Word下载.docx_第4页
第4页 / 共10页
使用MicrosoftPracticesUnity 依赖注入Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

使用MicrosoftPracticesUnity 依赖注入Word下载.docx

《使用MicrosoftPracticesUnity 依赖注入Word下载.docx》由会员分享,可在线阅读,更多相关《使用MicrosoftPracticesUnity 依赖注入Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

使用MicrosoftPracticesUnity 依赖注入Word下载.docx

usingSystem.Text;

usingSystem.Threading.Tasks;

usingMicrosoft.Practices.Unity;

namespaceUnitySample

{

publicinterfaceICustomerDataAccess

{

voidSave(Customerc);

}

publicclassCustomerSqlDataAccess:

ICustomerDataAccess

publicvoidSave(Customerc)

Console.Write("

{2},savedataid:

{0},name{1}"

c.Id,c.Name,this.GetType().ToString());

publicclassCustomerMysqlDataAccess:

c.Id,c.Name,this.GetType().ToString());

publicclassCustomer

publicICustomerDataAccessCustomerDataAccess{get;

set;

publicstringId{get;

publicstringName{get;

publicvoidSave()

CustomerDataAccess.Save(this);

classProgram

staticvoidMain(string[]args)

}

传统做法可能是在配置文件中填几个一个变量dbType=sqlormysql.然后在customer对象中根据设定的dbtype来实力化不同的dataaccess.

代码可能会是下面这个样子,这样的话,customer对象实际上依赖于CustomerSqlDataAccess和CustomerSqlDataAccess的,而且,未来比如要新增加其他数据库的支持,则必须修改customer对象的源代码。

publicCustomer()

if(DbType="

sql"

CustomerDataAccess=newCustomerSqlDataAccess();

else

下面我们使用unity来解除customer对象对CustomerSqlDataAccess和CustomerSqlDataAccess的依赖。

一、属性注入(PropertyInjection)

1.配置unity

  为了以后调用方便,我这里建立了一个静态方法,然后注入了两个dataaccess。

publicclassUnitySetup

publicstaticvoidConfig()

varcontainer=newUnityContainer();

container.RegisterType&

lt;

ICustomerDataAccess,CustomerSqlDataAccess&

gt;

();

("

mysql"

);

  然后我们需要在Main函数中调用这个方法配置unitycontainter.

  

     staticvoidMain(string[]args)

UnitySetup.Config();

2.标记属性注入

  这步很简单,直接在customer类中的ICustomerDataAccess定义上面添加[Dependency]标注即可。

[Dependency]

publicICustomerDataAccessCustomerDataAccess{get;

3.通过resove获取对象

UnitySetup.Config(container);

varsqlCustomer=container.Resolve&

ICustomerDataAccess&

varmysqlCustomer=container.Resolve&

上面的代码就分别获取了CustomerSqlDataAccess实例和CustomerSqlDataAccess实例

二、构造器注入(ConstructorInjection)

  

unityContainer.RegisterType&

Customer&

newInjectionConstructor(newResolvedParameter&

()));

mysqlCustomer"

)));

添加两行注册customer对想到container.

2.获取

varmyqlCustomer=container.Resolve&

完整代码如下

usingSystem.Data;

Console.WriteLine("

publicstaticvoidConfig(IUnityContainerunityContainer)

ICustomerDataAccess,CustomerMysqlDataAccess&

privateICustomerDataAccessCustomerDataAccess{get;

publicCustomer(ICustomerDataAccesscustomerDataAccess)

CustomerDataAccess=customerDataAccess;

sqlCustomer.Save();

myqlCustomer.Save();

Console.ReadKey();

三、方法调用注入(MethodCallInjection)

方法调用注入和输入注入有点类似,只需要在调用的方法上面添加[InjectionMethod]标注即可

newInjectionMethod("

SetDataAccess"

newResolvedParameter&

完成后的代码如下

[InjectionMethod]

publicvoidSetDataAccess(ICustomerDataAccessdataAccess)

CustomerDataAccess=dataAccess;

mysqlCustomer.Save();

好了,通过使用unity依赖注入,customer对象不再依赖具体的CustomerSqlDataAccess和CustomerMysqlDataAccess.,只依赖于接口ICustomerDataAccess。

上面就是unity的基本用法介绍。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1