利用反射实现的抽象工厂
传入想要实例化的类,反射实现创建类
抽象工厂代码
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>
上面这个抽象工厂,实现了配置文件修改需要实例化的类。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!