利用反射实现的抽象工厂
传入想要实例化的类,反射实现创建类
抽象工厂代码
    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>上面这个抽象工厂,实现了配置文件修改需要实例化的类。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号