工廠模式Assembly.Load(path).CreateInstance 反射出錯解決辦法


項目結構:

 

 

DALFactory 反射代碼反射

//使用緩存
        private static object CreateObject(string AssemblyPath,string classNamespace)
        {            
            object objType = DataCache.GetCache(classNamespace);
            if (objType == null)
            {
                try
                {
                    Assembly assm = Assembly.Load(AssemblyPath);//第一步:通過程序集名稱加載程序集
                    objType = assm.CreateInstance(classNamespace);// 第二步:通過命名空間+類名創建類的實例。        
                    DataCache.SetCache(classNamespace, objType);// 寫入緩存
                }
                catch//(System.Exception ex)
                {
                    //LogOperate.WriteErrorLog("創建反射異常(不使用緩存)", ex);
                    //string str=ex.Message;// 記錄錯誤日志
                }
            }
            return objType;
        }

當程序運行時到Assembly assm = Assembly.Load(AssemblyPath); assm值為空則會報錯

錯誤原因一:

配置文件中的Key的Value必須跟,SQLServerDAL中的程序集名稱一致。

右鍵SQLServerDAL,屬性,可查看程序集名稱

錯誤原因二:

站點沒有引用SQLServerDAL,添加引用即可

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM