資料背景:
通過【用戶資訊業務】表單,呼叫訪問層介面物件,創建反射類物件。簡而言之,就是想通過反射創建的物件連接SQLite。
現在不知道是我的App.Config配置寫的有問題,還是邏輯上的問題。還希望大佬能指導一下
問題前身,請見圖:(通過跟蹤檢查來的)




以下是第4張圖(縮縮圖),Init方法[引數賦值后,初始化相關物件]原始碼:
/// <summary>
/// 引數賦值后,初始化相關物件
/// </summary>
/// <param name="bllFullName">BLL業務類的全名(子類必須實作),子類建構式傳入this.GetType().FullName</param>
/// <param name="dalAssemblyName">資料訪問層程式集的清單檔案的檔案名,不包括其擴展名。設定為NULL或默認為Assembly.GetExecutingAssembly().GetName().Name</param>
/// <param name="bllPrefix">BLL命名空間的前綴(BLL.)</param>
/// <param name="dbConfigName">資料庫配置項名稱</param>
protected void Init(string bllFullName, string dalAssemblyName = null, string bllPrefix = "BLL.")
{
if (string.IsNullOrEmpty(bllFullName))
throw new ArgumentNullException("子類未設定bllFullName業務類全名!");
if (string.IsNullOrEmpty(dalAssemblyName))
{
dalAssemblyName = Assembly.GetExecutingAssembly().GetName().Name;
}
//賦值,準備構建物件
this.bllFullName = bllFullName;
this.dalAssemblyName = dalAssemblyName;
this.bllPrefix = bllPrefix;
#region 根據不同的資料庫型別,構造相應的DAL層
AppConfig config = new AppConfig();
string dbType = config.AppConfigGet("ComponentDbType");
if (string.IsNullOrEmpty(dbType))
{
dbType = "sqlserver";
}
dbType = dbType.ToLower();
string DALPrefix = "";
if (dbType == "sqlserver")
{
DALPrefix = "DALSQL.";
}
else if (dbType == "access")
{
DALPrefix = "DALAccess.";
}
else if (dbType == "oracle")
{
DALPrefix = "DALOracle.";
}
else if (dbType == "sqlite")
{
DALPrefix = "DALSQLite.";
}
else if (dbType == "mysql")
{
DALPrefix = "DALMySql.";
}
#endregion
dalName = bllFullName.Replace(bllPrefix, DALPrefix);//替換中級的BLL.為DAL.,就是DAL類的全名
baseDal = Reflect<IBaseDAL<T>>.Create(dalName, dalAssemblyName);//構造對應的DAL資料訪問層的物件類
}
我是將Init等方法單獨封裝的類,Reflect反射操作輔助類是也是單獨封裝的。
還請不吝賜教
uj5u.com熱心網友回復:
不想看這種裹腳布代碼只告訴怎么確定問題
新建一個單元測驗或者就干脆一個控制臺
1.直接參考那個庫
2.直接new那個類
3.在用 Assembly load,在用反射直接呼叫
這里全做完畢都綠燈,在來談你自己的代碼
uj5u.com熱心網友回復:
好吧,我試試,這是個好思路。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/211584.html
標籤:C#
上一篇:如何做仿照ps中的曲線功能
