反射工厂怎么弄?详细点~代码贴出来。~谢谢~

解决方案 »

  1.   

    petshop里就是反射工厂呀,看看吧,要是没有百度一个PETSHOP去,然后安装上
      

  2.   

    看petshop
      private static readonly string _path = System.Configuration.ConfigurationManager.AppSettings["DAL"];
            private static object GetInstance(string CacheKey)
            {
                object objType = DataCache.GetCache(CacheKey);
                if (objType == null)
                {
                    try
                    {
                        objType = Assembly.Load(DALFactory._path).CreateInstance(CacheKey);
                        DataCache.SetCache(CacheKey, objType);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
                return objType;
            }
            public static IAnnounceDAL AnnounceDALInstance()
            {
                string CacheKey = DALFactory._path + ".AnnounceDAL";
                object objType = DALFactory.GetInstance(CacheKey);
                return (IAnnounceDAL)objType;
            }
      

  3.   

    /*
     *
     * 公司名称 : ***
     * 用 户 名 : 枫中玫瑰
     * 创建日期 :2009-1-6  16:25
     * 程序名称 :AbstractFactory模式
     * 
     */using System;
    using System.Text;
    using System.Reflection;namespace ConsoleApplication1
    {
        class ChineseCode
        {
            public static void Main()
            {
                Factory mySalary = Factory.GetInstance();            double bonusValue = mySalary.CalculateBonus();
                double taxValue = mySalary.CalculateTax();
                double salary = Constant.BASE_SALARY + bonusValue - taxValue;            Console.WriteLine(Constant.FACTORYNAME.Substring(0, Constant.FACTORYNAME.Length - 7) + " Salary is:" + salary);
                Console.ReadKey();
            }
        }    #region Abstract Factory模式(抽象工厂)
        /// <summary>
        /// 公用的常量
        /// </summary>
        public class Constant
        {
            public static double BASE_SALARY = 4000;
            public static string FACTORYNAME = "ChineseFactory";      //因未使用配置文件, 故此处用于指定工厂
        }    /// <summary>
        /// 抽象工厂
        /// </summary>
        public abstract class Factory
        {
            public static Factory GetInstance()
            {
                Factory instance;
                string assemblyName = "ConsoleApplication1";            // 使用该语句会造成NullReferencException异常
                // string factoryName = Constant.FACTORYNAME.ToString();
                string factoryName = assemblyName + "." + Constant.FACTORYNAME.ToString();            //使用反射时, 命名空间应与程序名一致, 否则会造成NullReferencException异常
                if (factoryName != "")
                    instance = (Factory)Assembly.Load(assemblyName).CreateInstance(factoryName);
                else
                    instance = null;            return instance;
            }        public abstract double CalculateBonus();
            public abstract double CalculateTax();
        }    /// <summary>
        /// 中国工厂
        /// </summary>
        public class ChineseFactory : Factory
        {
            //计算工资
            public override double CalculateBonus()
            {
                return Constant.BASE_SALARY * 0.1;
            }        // 计算个人所得税
            public override double CalculateTax()
            {
                return ((Constant.BASE_SALARY + Constant.BASE_SALARY * 0.1) * 0.4);
            }
        }    //// <summary>
        /// 美国工厂
        /// </summary>
        public class AmericanFactory : Factory
        {
            //计算工资
            public override double CalculateBonus()
            {
                return Constant.BASE_SALARY * 0.15;
            }        // 计算个人所得税
            public override double CalculateTax()
            {
                return (Constant.BASE_SALARY * 0.05 + Constant.BASE_SALARY * 0.25);
            }
        }
        #endregion
    }
    代码来自程杰的 大话设计模式 . 如果不懂, 可以下本电子书来看.