为公司做了一个菜单按钮生成工具,根据Controller类上加上自定义的菜单属性,Action加上操作属性后,用反射将其读出后,插入到数据库。本来用了很长时间,这个工具还比较正常。
直到2个异常问题爆发出来后...
1.异常一
此问题我用排除发,发现只要是 被反射的类中 申明了 静态 引用类型 变量,则这句会报错.
后来 我只要把那些静态 引用类型变量清除,虽然不报错了,但我还是不是很理解为什么.
2.异常二
这个异常我依然用排除法,发现只要是被反身的Controller类中,如果action里面用到了基类ControllerBase的 ViewBag全局属性,就会报这个.
这个就郁闷了,不知道怎么解决。因为controller类里面不肯能不用ControllerBase的东东吧。
求大神帮忙解决下
异常二中 viewBag是来源于基类,是dynamic类型!
测试工程上传了,链接地址
http://files.cnblogs.com/sprout-itc/%E5%8F%8D%E5%B0%84%E6%8A%A5%E9%94%99.rar
这个Controller中ViewBag.Test = "asd";
只要加了这个,就报错!
你把那些静态 引用类型变量相应的DLL,也引用到项目中,试试
试过了,应该不是这个问题!
谢谢你!
@斯普劳特【深圳】: 那真没法解析了,可以的话把有关的码都弄上来
@Yu: 那个异常一确实是dll没有拷进去导致的!
异常二应该不是,我所有dll都拷进去了
谢谢!
试试Activator.CreateInstance()
no,我刚试过了,问题依旧,仍然谢谢你!
一直使用Activtor.CreateInstance(),创建对象实例,貌似没遇到你的错误。
no,我刚试过了,问题依旧,仍然谢谢你!
@斯普劳特【深圳】: 会不会引用的dll,还对别的dll有依赖?
我测了,没有报错。能否做个Demo?
我也单独用这个去测了,确实没错!
我现在正在把我报错的项目中关键的东西分离出来,然后再上传!
兄弟,你还专门去测试,太热心里,感觉博客园的 兄弟门都是好人!
好人~
@斯普劳特【深圳】: 事实上,是反射成功了的。出错在于使用ViewBag后,系统在MvcApplication2.Controllers命名空间下又生成了一个私有的静态类private static class <GenerateWaitPrintData>o__SiteContainer0 {//...},你知道,静态类是不能被实例化的。