反射(二)反射工厂

 string Name = "IMPORT_JOB";
            Object obj= QSDBFactoryReflection.Instance.Create("Factory." + Name);//利用反射 

            // QSDBFactory.Instance.Create(Name);//不用反射 

namespace Factory
{
    #region Example 2.简单工厂
     /// <summary>
        /// //不用反射的工厂类  
        /// </summary>
        public class QSDBFactory
        {
            private static QSDBFactory instance = new QSDBFactory();
            public static QSDBFactory Instance
            {
                get { return instance; }
            }
            public IQSDB Create(string name)
            {
                switch (name)
                {
                    case "IMPORT_JOB":
                        return new IMPORT_JOB();
                    case "DCCHECK":
                        return new DCCHECK();
                    case "OCEAN":
                        return new OCEAN();
                    default:
                        throw new Exception("Wrong name.");
                }
            }
        }


        /// <summary>
        /// 反射工厂类  
        /// </summary>
        public class QSDBFactoryReflection
        {
            private static QSDBFactoryReflection _instance = new QSDBFactoryReflection();
            public static QSDBFactoryReflection Instance
            {
                get { return _instance; }
            }




            public IQSDB Create(string Name)
            {
                IQSDB qsdb = null;
                try
                {
                    Type type = Type.GetType(Name, true);
                    qsdb = (IQSDB)Activator.CreateInstance(type);
                }
                catch (TypeLoadException e)
                {
                    Console.WriteLine("exception caught - {0}", e.Message);
                }
                return qsdb;
            }
        }


      


        public class IMPORT_JOB : IQSDB
        {
            public IMPORT_JOB()
            {
                Console.WriteLine("IMPORT_JOB");
            }
            public void Execute() { Console.WriteLine("Execute IMPORT_JOB!"); }
        }
        public class DCCHECK : IQSDB
        {
            public DCCHECK()
            {
                Console.WriteLine("DCCHECK");
            }
            public void Execute() { Console.WriteLine("Execute DCCHECK!"); }
        }
        public class OCEAN : IQSDB
        {
            public OCEAN()
            {
                Console.WriteLine("OCEAN");
            }
            public void Execute() { Console.WriteLine("Execute OCEAN!"); }
        }


        #endregion 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值