抽象工厂核心反射
2014-02-26 14:59
274 查看
using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespace TestReflection { class Program { static void Main(string[] args) { IName objChineseName = AbstractFactory.createChineseName(); objChineseName.ShowName(); IName objEnglishName = AbstractFactory.createChineseName(); objEnglishName.ShowName(); } } // 声明一个接口,它有一个显示"名字"的功能(ShowName方法) public interface IName { void ShowName(); } // 实现接口,显示中国名字 public class ChineseName : IName { IName 成员 } // 实现接口,显示中国名字 public class EnglishName : IName { IName 成员 } // 最为重要的代码段,往下看 // 使用抽象工厂的方法来进行动态创建对象实例应用哦 public sealed class AbstractFactory { public static readonly string path = "TestReflection"; public static IName createChineseName() { // s 的值以后从Web.Config动态读取,如下所示 /* */ // 把className赋值为:TestReflection.ChineseName,将显示中文名 string className = path + ".ChineseName"; return (IName)Assembly.Load(path).CreateInstance(className); } public static IName createEnglishName() { string className = path + ".EnglishName"; return (IName)Assembly.Load(path).CreateInstance(className); } } }
如果你不太清楚自己的解决方案中都用到了哪些Assembly,可以使用下面的方法,如果再想得到Assembly里的信息
namespace TestReflection { class Program { static void Main(string[] args) { // 遍历显示每个Assembly的名字 foreach (object var in Ax) { Console.WriteLine("Assembly的名字是:" + var.ToString()); // 使用一个已知的Assembly的名称,来创建一个Assembly // 通过CodeBase属性显示最初指定的程序集的位置 Console.WriteLine("最初指定的程序集TestReflection的位置:" + Assembly.Load("TestReflection").CodeBase); Console.ReadLine(); } } } }
相关文章推荐
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- C#实战反射、事件、抽象工厂、发布订阅模式
- 抽象工厂试用反射实现创建工厂
- [转]三层之抽象工厂加反射实例
- 反射实现抽象工厂
- 三层架构之抽象工厂加反射——实现数据库转换
- 设计模式——抽象工厂之反射“+”
- 三层架构之抽象工厂加反射----实现数据库转换
- 【.NET机房重构】——再看抽象工厂加反射实现登录
- 三层架构之抽象工厂加反射----实现数据库转换
- 抽象工厂加反射(一)
- C#结合反射实现抽象工厂
- 企业库、抽象工厂、单例、反射、分层的简单的学习示例源码【转】
- DRP项目(十):抽象工厂加反射(一)
- 三层之抽象工厂加反射实例
- C#反射和抽象工厂的结合
- DRP项目(十):抽象工厂加反射框架实例(二)
- 三层架构之抽象工厂加反射
- 抽象工厂之“反射”技术
- 三层架构之抽象工厂加反射----实现数据库转换