学习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();
}
}
}
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();
}
}
}