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();
}
}
沒有留言:
張貼留言