2016年7月22日 星期五

C#利用Type建立物件

BaseClass bd = new DClass();
BaseClass newB = (BaseClass)System.Activator.CreateInstance(bd.GetType());
這時候bd.GetType()會得到DClass


可以用這方法建立工廠,針對傳入的Type,查表得到要製造的Type
ex:
在工廠類別中
            // 產生,並初始化類別字典
            Dictionary<Type, Type> typeDic = new Dictionary<Type, Type>() {
                { typeof(int), typeof(intProcessClass) },
                { typeof(double), typeof(doubleProcessClass) },
            };
            // 依輸入物件型別型別產生對應的型別
            public IProcessClass Create(Object item)
            {
                var type = item.GetType();
                if (typeDic.ContainsKey(type))
                {
                    var res = (IProcessClass)Activator.CreateInstance(typeDic[type]);
                     // do some common init
                     return res;
                }
                else
                {
                    throw new FormatException();
                }
            }

沒有留言:

張貼留言