一定要好好看一下自己的反射创建对象语句以及配置文件中的类名是否有错误。
1.反射创建对象的语句
//常规写法
//接口 要实例化的类
IBLL discount = new CashNormal();
//首先,引用命名空间
using System.Reflection;
//反射的写法
IBLL discount = Assembly.Load("当前程序集名称").CreateInstance("当前命名空间名称.要实例化的具体类名" );
注:
①程序集名称与命名空间名称可能会不一致,注意查看当前程序集的属性。
②如果要实例化的类在一个文件夹或者类库中,在反射语句中也要加上文件夹或类库的名字,为的是可以通过"路径"找到具体的要实例化的类。
2.配置文件中的内容
//value值和类名要一致
<add key="正常收费" value="CashNormalBLL"/>
3.未将对象引用设置到对象的实例出现原因:
就是一个Null的对象调用了方法(属性或其它成员)变成Null.XXX引发的。