
本文共 6870 字,大约阅读时间需要 22 分钟。
���������PRISM���������������, ���������������������Unity ������Component, ������������������������������������������������������������������������������������������������������������
���������������������������������������������������Unity���������������
���Unity������������������������������������
������������������������������������������������A���������������������B������������������������B���������������������A������������������������������������������A���������������������B������������
public class A { B b; public A() { B = new B(); } }
������������������������������������������������������������������������������������������������Code Change���������������������B���������������������������������������������������������������������������������������������������������������
������������������������������������������������������������A������������������B���������������������������������������
public class A { B b; public A(B _b) { This.b = _b; } }
������������������������������������B������������������A������������������������������������������������������������������������A������������������������������B���������������������B���������������������������������������������������������������B���������������������������������������������������������������������������������
������������������������������������������������������������������������������������������
public class A { IMyObject myObj; public A(IMyObject myObj) { this.myObj = myObj; } }
������������������������������������������������������������������������������������������������������(���������IService������������)���������������������������������������������������������������������������������������������������������������������������������������������������������DataExtracting���������������������������������������������������������������������������DataExtracting���������������������������������
���Unity������������������������������������
���������Unity������������������������������������������������������������������Unity���������������������������������������������������������������������������
���������������������
UnityContainer container = new UnityContainer(); private void button1_Click(object sender, EventArgs e) { container.RegisterType(DependencyRegistrationKeys.FirstImplementation); container.RegisterType (DependencyRegistrationKeys.SecondImplementation); container.RegisterType (); container.RegisterType (); }
������������������
public MyObjectFactory(UnityContainer unityContainer) { this.unityContainer = unityContainer; } public UnityContainer unityContainer; public IMyObject Create(string objKey) { return unityContainer.Resolve(objKey); }
������������������������������������������������������������������Unity������������������������������������������
������������
������������������������������IMyObject������������������������������������������������
���������
namespace UnityDaemon{ public interface IMyObject { string DoSomething(); }}
MyObjectFirstImplementation������
namespace UnityDaemon{ public class MyObjectFirstImplementation:IMyObject { public string DoSomething() { return "You call me ? I am the first one, I am from MyObjectFirstImplementation!! "; } }}
MyObjectSecondImplementation������
namespace UnityDaemon{ public class MyObjectSecondImplementation:IMyObject { public string DoSomething() { return "You call me ? I am the second one, I am from MyObjectSecondImplementation!! "; } }}
MyObjectThirdImplementation������
namespace UnityDaemon{ public class MyObjectThirdImplementation:IMyObject { public string DoSomething() { return "I am the third. Do whatever you want to ~~~"; } }}
������������������������������������������������...
���������������������������������Factory���������������Object������������������������
using Microsoft.Practices.Unity;namespace UnityDaemon{ public class MyObjectFactory { public MyObjectFactory() { } public MyObjectFactory(UnityContainer unityContainer) { this.unityContainer = unityContainer; } public UnityContainer unityContainer; public IMyObject Create(string objKey) { return unityContainer.Resolve(objKey); } }}
������������������������������������������������������������Winform���������������Button1���������������������Button2���������������������������������Button3���������������������������������
using System;using System.Windows.Forms;using Microsoft.Practices.Unity;namespace UnityDaemon{ public partial class MainFrm : Form { UnityContainer container; public MainFrm() { InitializeComponent(); container = new UnityContainer(); } private void button1_Click(object sender, EventArgs e) { container.RegisterType(DependencyRegistrationKeys.FirstImplementation); container.RegisterType (DependencyRegistrationKeys.SecondImplementation); container.RegisterType (); container.RegisterType (); } private void button2_Click(object sender, EventArgs e) { var factory = new MyObjectFactory(container); var myObj = factory.Create(DependencyRegistrationKeys.FirstImplementation); string str = myObj.DoSomething(); MessageBox.Show(str); var myObj1 = factory.Create(DependencyRegistrationKeys.SecondImplementation); string str1 = myObj1.DoSomething(); MessageBox.Show(str1); } private void button3_Click(object sender, EventArgs e) { var myObj1 = container.Resolve (); MessageBox.Show(myObj1.DoSomething()); } }}
������������������������������������������Button1������������������������������������������������������������Button2������������������������������������������������������������Button3���������������������������
You call me ? I am the first one, I am from MyObjectFirstImplementation!!
��������������������� ������������������������������������������������������������������������������������������������������������������������������������������MyObjectThirdImplementation������������������������������������������
������������
������������
发表评论
最新留言
关于作者
