using System;
using System.Collections.Generic;
using System.Text;
namespace ABC.Factory
{
public class BLLFactory
{
/// <summary>
/// 建立執行個體
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="TypeName"></param>
/// <returns></returns>
public static T CreateInstant<T>(string TypeName)
{
T ret = default(T);
try
{
string dd = typeof(string).ToString();
string FullTypeName = "ABC.BLL." + TypeName;
Type type = Type.GetType(FullTypeName);
object obj = Activator.CreateInstance(type);
ret = (T)obj;
return ret;
}
catch
{
return ret;
}
}
/// <summary>
/// 建立執行個體
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="TypeName"></param>
/// <param name="Args">建構函式的參數</param>
/// <returns></returns>
public static T CreateInstant<T>(string TypeName,object[] Args)
{
T ret = default(T);
try
{
string dd = typeof(string).ToString();
string FullTypeName = "ABC.BLL." + TypeName;
Type type = Type.GetType(FullTypeName);
object obj = Activator.CreateInstance(type, Args);
ret = (T)obj;
return ret;
}
catch
{
return ret;
}
}
}
}
//介面編程,反射建立對象
// 類庫IBLL裡定義有介面ICXbll ,
// 類庫 BLL裡定義有類CXbll 。類FPCXbll實現 介面ICXbll
// 為使得能夠在只引用介面庫IBLL而不引用類庫 BLL的條件下建立類 BLL.CXbll
IBLL.ICXbll cxBLL = Factory.BLLFactory.CreateInstant<IBLL.ICXbll>("CXbll");
BLL.CXbll cxBLL = new ABC.BLL.CXbll();