public partial class TestReflection : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//直接实例化ChineseName,调用 ShowName() 方法
ChineseName cn = new ChineseName();
Response.Write(cn.ShowName());
//通过 工厂类(Factory) 实例化ChineseName ,调用ShowName() 方法
IName iname = null;
Factory factory = new Factory();
iname = (IName)factory.MakeCn();
Response.Write(iname.ShowName());
//通过工厂类(AbstractFactory) 实例化ChineseName ,调用ShowName() 方法
IName name = AbstractFactory.GetName();
string s = name.ShowName();
Response.Write(s);
}
}
public class Factory
{
public object MakeCn()
{
return (object)new ChineseName();
}
public object MakeEn()
{
return (object)new EnglishName();
}
}
public class AbstractFactory
{
public static IName GetName()
{
//反射机制(动态调用类及类方法)
//s的值以后从Web.config动态获取
//把s赋值为:TestReflection.EnglishName,将显示英文名
string s = "MyTest.UI.ChineseName";
IName name = (IName)Assembly.Load("MyTest.UI").CreateInstance(s);
return name;
}
}
//声明一个接口,它有一个显示"名字"的功能
public interface IName
{
string ShowName();
}
//实现接口,显示中国名字
public class ChineseName : IName
{
public string ShowName()
{
// Response.Write("中文名");
return ("我叫AX!");
}
}
//实现接口,显示英国名字
public class EnglishName:IName
{
public string ShowName()
{
//Response.Write("English Name");
return ("my name is AX!");
}
}
浙公网安备 33010602011771号