using System;
using System.Reflection;
namespace Reflex.factory
{
class Program
{
static void Main(string[] args)
{
Ikess fk1 = FactoryManage.fnGetIkess("kess");
fk1.write();
Ikess fk2 = FactoryManage.fnGetIkess("kess2");
fk2.write();
Ikess fk3 = FactoryManage.fnGetIkess("kess3");
fk3.write();
string mNamespace = "Reflex.factory";
Ikess k1 = ReflexFactoryManage.fnGetIkess(mNamespace,"kess");
k1.write();
Ikess k2 = ReflexFactoryManage.fnGetIkess(mNamespace, "kess2");
k2.write();
Ikess k3 = ReflexFactoryManage.fnGetIkess(mNamespace, "kess3");
k3.write();
ReflexFactoryManage fy = new ReflexFactoryManage(mNamespace);
Ikess k4 = fy.fnGetIkess("kess4");
k4.write();
Console.ReadKey();
}
}
internal class FactoryManage
{
internal static Ikess fnGetIkess(string mClassName)
{
switch (mClassName)
{
case "kess":
return new kess();
case "kess2":
return new kess2();
case "kess3":
return new kess3();
case "kess4":
return new kess4();
default:
throw new Exception("不存在此工厂");
}
}
}
internal class ReflexFactoryManage
{
string mNamespace = "";
internal ReflexFactoryManage(string mNamespace)
{
this.mNamespace = mNamespace;
}
internal Ikess fnGetIkess(string mClassName)
{
return Assembly.Load(mNamespace).CreateInstance(mNamespace + "." + mClassName) as Ikess;
}
internal static Ikess fnGetIkess(string mNamespace, string mClassName)
{
return Assembly.Load(mNamespace).CreateInstance(mNamespace + "." + mClassName) as Ikess;
}
}
internal interface Ikess
{
void write();
}
internal class kess : Ikess
{
public void write()
{
Console.WriteLine("is kess");
}
}
internal class kess2 : Ikess
{
public void write()
{
Console.WriteLine("is kess2");
}
}
internal class kess3 : Ikess
{
public void write()
{
Console.WriteLine("is kess3");
}
}
internal class kess4 : Ikess
{
public void write()
{
Console.WriteLine("is kess4");
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)