首页 > 代码库 > c# 依赖注入之---反射(转)
c# 依赖注入之---反射(转)
详细请看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 IButton 10 { 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 : IButton 10 { 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# 依赖注入之---反射(转)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。