传入想要实例化的类,反射实现创建类
抽象工厂代码
class SimpleFactory<T> where T :class
{
private static string IConfigSpace = ConfigurationManager.AppSettings["NameSpace"];
private static string IConfigName = ConfigurationManager.AppSettings["Name"];
public static T Slove()
{
for (int i = 0; i < IConfigName.Split(',').Length; i++)
{
//Assembly assembly = Assembly.Load(IConfigSpace);
//Type type = assembly.GetType(IConfigSpace + "." + IConfigName.Split(',')[i]);
//T temp = Activator.CreateInstance(type) as T;
T temp = Assembly.Load(IConfigSpace).CreateInstance(IConfigSpace + "." + IConfigName.Split(',')[i]) as T;
if (temp != null) return temp;
}
return null;
}
}
通过config配置,添加需要实现的类。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<appSettings>
<add key="NameSpace" value="SimpleFactoryByReflection"/>
<add key="Name" value="Animal,Plant,Mammal,Car"/>
</appSettings>
</configuration>
上面这个抽象工厂,实现了配置文件修改需要实例化的类。