標籤:bsp ninject -- nbsp sea blog desc sse config
詳細請看http://www.cnblogs.com/leoo2sk/archive/2009/06/17/1504693.html
定義一個介面,和兩個類(實現該介面)
IButton:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ReflectionInjection 8 { 9 internal interface IButton10 {11 string ShowInfo();12 }13 }
WindowsButton:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ReflectionInjection 8 { 9 internal sealed class WindowsButton : IButton10 {11 public string Description { get; private set; }12 public WindowsButton()13 {14 this.Description = "Windows風格按鈕";15 }16 public string ShowInfo()17 {18 return this.Description;19 }20 }21 }
MacButton:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ReflectionInjection{ internal sealed class MacButton : IButton { public String Description { get; private set; } public MacButton() { this.Description = " Mac風格按鈕"; } public string ShowInfo() { return this.Description; } }}
ReflectionFactory:
using System;using System.Collections.Generic;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;using System.Xml;namespace ReflectionInjection{ internal static class ReflectionFactory { private static string _buttonType; static ReflectionFactory() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(Environment.CurrentDirectory + "\\Config.xml"); XmlNode xmlNode = xmlDoc.ChildNodes[1].ChildNodes[1]; _buttonType = xmlNode.ChildNodes[0].Value; } public static IButton MakeButton() { return Assembly.Load("ReflectionInjection").CreateInstance("ReflectionInjection." + _buttonType) as IButton; } }}
主入口:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ReflectionInjection{ class Program { static void Main(string[] args) { //ReflectionFactory IButton button = ReflectionFactory.MakeButton(); Console.WriteLine("建立 " + button.ShowInfo()); Console.ReadLine(); } }}
xml:
<?xml version="1.0" encoding="utf-8" ?><config> <window>MacWindow</window> <button>MacButton</button> <textBox>MacTextBox</textBox></config>
c# 依賴注入之---反射(轉)