学习c#反射的一个例子

using System;
using System.Reflection;

namespace TestReflection
{
  class Program
  {
    static void Main(string[] args)
    {
      IName name = AbstractFactory.GetName();
      name.ShowName();
    }
  }

  //抽象工厂类
  public class AbstractFactory
  {
    public static IName GetName()
    {
      string assemblyName = "TestReflection"//类库名字

      
//className的值以后可以在Web.config动态获取
      
//把className赋值为:TestReflection.EnglishName,将显示英文名字
      string className = "TestReflection.ChineseName";//类名字
      IName name = (IName)Assembly.Load(assemblyName).CreateInstance(className);
      return name;
    }
  }

  //声明一个接口,它有一个显示“名字”的功能
  public interface IName
  {
    void ShowName();
  }

  //实现接口,显示中国名字
  public class ChineseName : IName
  {
    public void ShowName()
    {
      Console.WriteLine("我中文名字叫:罗宾汉");
      Console.ReadLine();
    }
  }

  //实现接口,显示英文名字
  public class EnglishName : IName
  {
    public void ShowName()
    {
      Console.WriteLine("My name is : Robin Hood");
      Console.ReadLine();
    }
  }
}

posted on 2011-11-10 14:14  ewyb  阅读(271)  评论(1编辑  收藏  举报

导航