Unity浅析
发布日期:2021-05-14 04:38:01 浏览次数:15 分类:博客文章

本文共 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������������������������������������������������

���������

View Code
namespace UnityDaemon{    public interface IMyObject    {        string DoSomething();    }}

MyObjectFirstImplementation������

View Code
namespace UnityDaemon{    public class MyObjectFirstImplementation:IMyObject    {        public string DoSomething()        {            return "You call me ? I am the first one,  I am from MyObjectFirstImplementation!! ";        }    }}

MyObjectSecondImplementation������

View Code
namespace UnityDaemon{    public class MyObjectSecondImplementation:IMyObject    {        public string DoSomething()        {            return "You call me ? I am the second one, I am from MyObjectSecondImplementation!! ";        }    }}

MyObjectThirdImplementation������

View Code
namespace UnityDaemon{    public class MyObjectThirdImplementation:IMyObject    {        public string DoSomething()        {            return  "I am the third. Do whatever you want to ~~~";        }    }}

������������������������������������������������...

���������������������������������Factory���������������Object������������������������

View Code
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���������������������������������

View Code
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������������������������������������������

������������

������������

 

上一篇:委托-利用GetInvocationList处理链式委托
下一篇:MVC in WinForm

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月20日 16时46分37秒