首页 新闻 搜索 专区 学院

C# 反射Assembly 疑问?

0
悬赏园豆:50 [已解决问题] 解决于 2013-10-11 23:06

为公司做了一个菜单按钮生成工具,根据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"; 

只要加了这个,就报错!

斯普劳特【深圳】的主页 斯普劳特【深圳】 | 初学一级 | 园豆:24
提问于:2013-07-22 12:06
< >
分享
最佳答案
0

把那些静态 引用类型变量相应的DLL,也引用到项目中,试试

收获园豆:30
Yu | 专家六级 |园豆:12950 | 2013-07-22 14:23

试过了,应该不是这个问题!

谢谢你!

斯普劳特【深圳】 | 园豆:24 (初学一级) | 2013-07-22 15:03

@斯普劳特【深圳】: 那真没法解析了,可以的话把有关的码都弄上来

Yu | 园豆:12950 (专家六级) | 2013-07-22 15:08

@Yu: 那个异常一确实是dll没有拷进去导致的!

异常二应该不是,我所有dll都拷进去了

谢谢!

斯普劳特【深圳】 | 园豆:24 (初学一级) | 2013-07-22 15:49
其他回答(3)
0

试试Activator.CreateInstance()

dudu | 园豆:37655 (高人七级) | 2013-07-22 12:24

no,我刚试过了,问题依旧,仍然谢谢你!

支持(0) 反对(0) 斯普劳特【深圳】 | 园豆:24 (初学一级) | 2013-07-22 13:52
0

一直使用Activtor.CreateInstance(),创建对象实例,貌似没遇到你的错误。

幻天芒 | 园豆:36672 (高人七级) | 2013-07-22 13:06

no,我刚试过了,问题依旧,仍然谢谢你!

支持(0) 反对(0) 斯普劳特【深圳】 | 园豆:24 (初学一级) | 2013-07-22 13:53

@斯普劳特【深圳】: 会不会引用的dll,还对别的dll有依赖?

支持(0) 反对(0) 幻天芒 | 园豆:36672 (高人七级) | 2013-07-22 15:03
0

我测了,没有报错。能否做个Demo?

收获园豆:20
上帝之城 | 园豆:2462 (老鸟四级) | 2013-07-22 14:49

我也单独用这个去测了,确实没错!

我现在正在把我报错的项目中关键的东西分离出来,然后再上传!

兄弟,你还专门去测试,太热心里,感觉博客园的 兄弟门都是好人!

支持(0) 反对(0) 斯普劳特【深圳】 | 园豆:24 (初学一级) | 2013-07-22 15:02

好人~

支持(0) 反对(0) 幻天芒 | 园豆:36672 (高人七级) | 2013-07-25 23:27

@斯普劳特【深圳】: 事实上,是反射成功了的。出错在于使用ViewBag后,系统在MvcApplication2.Controllers命名空间下又生成了一个私有的静态类private static class <GenerateWaitPrintData>o__SiteContainer0 {//...},你知道,静态类是不能被实例化的。

支持(0) 反对(0) 上帝之城 | 园豆:2462 (老鸟四级) | 2013-08-08 20:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册