1.新建一个控制台程序 名称:ConsoleApplication5
2新建一个IName有接口写一个 ShowName()方法
using System;
namespace ConsoleApplication5
...{
/**//// <summary>
/// IName 的摘要说明。
/// </summary>
public interface IName
...{
void ShowName();
}
}
3写一个 ChineseName 类并继承 IName 实现 ShowName()方法
using System;
namespace ConsoleApplication5
...{
/**//// <summary>
/// ChineseName 的摘要说明。
/// </summary>
public class ChineseName:IName
...{

IName 成员#region IName 成员
public void ShowName()
...{
Console.Write("我是Lem");
Console.Read();
}
#endregion
}
}4.写一个 EnglishName 类 并继承 IName 实现 ShowName()方法
using System;
namespace ConsoleApplication5
...{
/**//// <summary>
/// EnglishName 的摘要说明。
/// </summary>
public class EnglishName:IName
...{
IName 成员#region IName 成员
public void ShowName()
...{
Console.Write("My Name is Lem");
Console.Read();
}
#endregion
}
}
5.再写一个 AbstractFactory类用于反射 [引入:System.Reflection;命名空间]
using System;
using System.Reflection;
namespace ConsoleApplication5
...{
/**//// <summary>
/// AbstractFactory 的摘要说明。
/// </summary>
public class AbstractFactory
...{
public static IName GetName()
...{
string str="ConsoleApplication5.ChineseName";
IName name=(IName)Assembly.Load("ConsoleApplication5").CreateInstance(str);
return name;
}
}
}
6.最后在主程序中调用
using System;
namespace ConsoleApplication5
...{
/**//// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
...{
/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
...{
IName name=AbstractFactory.GetName();
name.ShowName();
}
}
}
本文介绍了一个使用C#创建的简单控制台程序,通过定义接口IName,并由两个类ChineseName和EnglishName实现该接口的ShowName方法。进一步通过抽象工厂模式利用反射动态创建并调用这些类型。
1462

被折叠的 条评论
为什么被折叠?



