利用反射实现的抽象工厂

传入想要实例化的类,反射实现创建类

抽象工厂代码

    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>

上面这个抽象工厂,实现了配置文件修改需要实例化的类。

posted @   xunzf  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示