博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个类型初始值设定项引发异常
阅读量:5897 次
发布时间:2019-06-19

本文共 1625 字,大约阅读时间需要 5 分钟。

事件原由:

上午打开VS,到系统的登录界面,登录提示“BLL类型初始值设定项引发异常”,当一看到很是郁闷,昨天还运行的好好的,为啥今天一登录就会提示“BLL类型初始值设定项引发异常”呢,而且我的程序编译都很正常,看样我的程序在语该方法肯定是没错的,既然这样,那应该就在程序运行时出的错了。

后来我想到我的程序中有个BLLBase类,该类是个“静态类”里面是一些从工厂得到的数据库访问层的对象,就是在执行登录时,要调用我的业务层(BLL)方法去执行我的登录判断,但是在业务层的类中又会通过我的BLLBase类去得到我的数据库访问层的对象:

/// <summary>

        /// 用户登陆
        /// </summary>
        /// <param name="uname"></param>
        /// <param name="upassword"></param>
        /// <returns></returns>
        public bool UserLogin(BaseMemberEntity model) 
        {
            return BLLBase.BaseUser.UserLogin(model);
        }

但是又想了想,登录功能,我们每天都在用,一直都没有出过这样的问题,真正的问题应该不在登录这里,后来我就在BLLBase类中设置了断点,进行单步的调试,结果发现,我的程序执行到了这步终于出现了异常:

/// <summary>

        /// 生产部设备维修
        /// </summary>
        public static readonly EIP.IDAL.IScDeviceService ScDeviceService = EIP.DataAccess.DalFactory.CreateScDeviceService();

这语句其实也很普通,就是通过工厂返回我的对象,这句话肯定是没问题的,那问题就应该在我的工厂方法里了(EIP.DataAccess.DalFactory.CreateScDeviceService()),

/// <summary>

        /// 生产部设备维修
        /// </summary>
        /// <returns></returns>
        public static IScDeviceService CreateScDeviceService()
        {
            string className = path + ".ScDeviceServiceDal";
            return (IScDeviceService)Assembly.Load(path).CreateInstance(className);
        }

其实工厂方法也很简单就是通过类的路径反射回我的对象,这理论上也是没问题的呀,为什么会在这里抛出错误呢,

程序继续向下执行,到了 (IScDeviceService)Assembly.Load(path).CreateInstance(className)这句时提示异常,难道是我的反射有问题,不对,后来又发现,我的反射后得到的对象又被转换成了接口(IScDeviceService),难道问题是在类型转换这?

后来我找到了解类(ScDeviceServiceDal),果不其然,问题真的出在这了,原来我的ScDeviceServiceDal类都没有实现IScDeviceService这个接口的,在类型转换时又怎么可能转换的成功呢(诶。。。Copy啊,我直接把接口中的方法Copy到ScDeviceServiceDal类中直接实现了,诶。。。呵呵。。。public partial class ScDeviceServiceDal),

OK....问题解决。。。。

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/04/16/2018329.html,如需转载请自行联系原作者

你可能感兴趣的文章
手写双向链表LinkedList的几个常用功能
查看>>
cross-env使用
查看>>
Fundebug计费标准解释:事件数是如何定义的?
查看>>
一文彻底弄懂 for forEach for-in for-of 的区别
查看>>
《前端十年心路-我把一切告诉你》的书稿大纲&问题收集
查看>>
前嗅ForeSpider教程:运行设置(一)
查看>>
2019
查看>>
CornerStone使用教程
查看>>
客户端检测
查看>>
python设计模式-状态模式
查看>>
Javascript 中的深浅拷贝
查看>>
Three.js 选择拾取对象学习总结
查看>>
Java多线程学习——公平锁
查看>>
【C++】 3_进化后的 const 分析
查看>>
SQLServer之通过视图修改数据
查看>>
Java基础【二】 - 值传递和引用传递
查看>>
C++ Primer 第一章 学习笔记及习题答案
查看>>
CAT 3.0 开源发布,支持多语言客户端及多项性能提升
查看>>
TypeScript踩坑(持续更新)
查看>>
LeetCode 102 ——二叉树的层次遍历
查看>>