一个类型初始值设定项引发异常
事件原由:
上午打開VS,到系統(tǒng)的登錄界面,登錄提示“BLL類型初始值設(shè)定項(xiàng)引發(fā)異常”,當(dāng)一看到很是郁悶,昨天還運(yùn)行的好好的,為啥今天一登錄就會(huì)提示“BLL類型初始值設(shè)定項(xiàng)引發(fā)異常”呢,而且我的程序編譯都很正常,看樣我的程序在語該方法肯定是沒錯(cuò)的,既然這樣,那應(yīng)該就在程序運(yùn)行時(shí)出的錯(cuò)了。
后來我想到我的程序中有個(gè)BLLBase類,該類是個(gè)“靜態(tài)類”里面是一些從工廠得到的數(shù)據(jù)庫訪問層的對(duì)象,就是在執(zhí)行登錄時(shí),要調(diào)用我的業(yè)務(wù)層(BLL)方法去執(zhí)行我的登錄判斷,但是在業(yè)務(wù)層的類中又會(huì)通過我的BLLBase類去得到我的數(shù)據(jù)庫訪問層的對(duì)象:
/// <summary>
??????? /// 用戶登陸
??????? /// </summary>
??????? /// <param name="uname"></param>
??????? /// <param name="upassword"></param>
??????? /// <returns></returns>
??????? public bool UserLogin(BaseMemberEntity model)
??????? {
??????????? return BLLBase.BaseUser.UserLogin(model);
??????? }
但是又想了想,登錄功能,我們每天都在用,一直都沒有出過這樣的問題,真正的問題應(yīng)該不在登錄這里,后來我就在BLLBase類中設(shè)置了斷點(diǎn),進(jìn)行單步的調(diào)試,結(jié)果發(fā)現(xiàn),我的程序執(zhí)行到了這步終于出現(xiàn)了異常:
/// <summary>
??????? /// 生產(chǎn)部設(shè)備維修
??????? /// </summary>
??????? public static readonly EIP.IDAL.IScDeviceService ScDeviceService = EIP.DataAccess.DalFactory.CreateScDeviceService();
這語句其實(shí)也很普通,就是通過工廠返回我的對(duì)象,這句話肯定是沒問題的,那問題就應(yīng)該在我的工廠方法里了(EIP.DataAccess.DalFactory.CreateScDeviceService()),
/// <summary>
??????? /// 生產(chǎn)部設(shè)備維修
??????? /// </summary>
??????? /// <returns></returns>
??????? public static IScDeviceService CreateScDeviceService()
??????? {
??????????? string className = path + ".ScDeviceServiceDal";
??????????? return (IScDeviceService)Assembly.Load(path).CreateInstance(className);
??????? }
其實(shí)工廠方法也很簡(jiǎn)單就是通過類的路徑反射回我的對(duì)象,這理論上也是沒問題的呀,為什么會(huì)在這里拋出錯(cuò)誤呢,
程序繼續(xù)向下執(zhí)行,到了?(IScDeviceService)Assembly.Load(path).CreateInstance(className)這句時(shí)提示異常,難道是我的反射有問題,不對(duì),后來又發(fā)現(xiàn),我的反射后得到的對(duì)象又被轉(zhuǎn)換成了接口(IScDeviceService),難道問題是在類型轉(zhuǎn)換這?
后來我找到了解類(ScDeviceServiceDal),果不其然,問題真的出在這了,原來我的ScDeviceServiceDal類都沒有實(shí)現(xiàn)IScDeviceService這個(gè)接口的,在類型轉(zhuǎn)換時(shí)又怎么可能轉(zhuǎn)換的成功呢(誒。。。Copy啊,我直接把接口中的方法Copy到ScDeviceServiceDal類中直接實(shí)現(xiàn)了,誒。。。呵呵。。。public partial class ScDeviceServiceDal),
OK....問題解決。。。。
總結(jié)
以上是生活随笔為你收集整理的一个类型初始值设定项引发异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: go in for business(g
- 下一篇: 23种基本设计模式简介