关于反射,程序集的问题

mmbf001 2009-04-03 11:18:07
问题现象(控制台程序):
1,代码:

ContextClass cc = new ContextClass();
cc.Set((BaseClass)Assembly.Load("appCode1").CreateInstance("appCode1." + dr["class"].ToString(), false, BindingFlags.Default, null, arg, null, null));

2,现象:其中appCode1是我在此控制台下新建的以文件夹,里面放入我需要的几个CLASS,其中一个抽象类,其他均继承此抽象类.控制台城下无其他任何东西,就如刚新建的项目一样,改动只有新建了一个文件夹和在此问加价内加了几个类
3,问题:我的需求是动态实例化上述文件夹内CLASS,代码如上,代码里dr["class"].ToString()是XML里读出来的类名.现在报错说无法映射到appCode1,不可见.
----------------------------------------
是否是Assembly.Load("PARAM")此处的参数是程序集名称,而我新建的普通文件夹不算程序集??
前段日子做过一个WEB项目,添加了ASP.NET FOLDER内的APP_CODE,完全可以使用反射去实例化APP_CODE内类以及使用类内方法....
----------------------
是程序集的问题?我的新建文件夹不算程序集,所以定位不到?
网上查了下程序集是DLL,EXE?那么为什么WEB项目下的文件夹APP_CODE不是DLL也不是EXE就可以反射呢?
实在不解....
希望有高人帮我理解一下其中的问题...
...全文
168 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmbf001 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cpp2017 的回复:]
应该是bin目录和app_code目录下的,新建的目录是找不到的.
[/Quote]

那是否意味着app_code是个例外?
tzs2304 2009-04-03
  • 打赏
  • 举报
回复
帮顶
tzs2304 2009-04-03
  • 打赏
  • 举报
回复
帮顶
benbirdar 2009-04-03
  • 打赏
  • 举报
回复
建议生成DLL或者EXE配件
jietuan 2009-04-03
  • 打赏
  • 举报
回复
我觉得你还是把你用到的那些类,放到一个类库里面,生成DLL,再加载这个DLL.Assembly.Load("appCode1"),load 方法是加载程序集或者是dll的名称。
benbirdar 2009-04-03
  • 打赏
  • 举报
回复
纯粹帮顶
cpp2017 2009-04-03
  • 打赏
  • 举报
回复
应该是bin目录和app_code目录下的,新建的目录是找不到的.
juqiang 2009-04-03
  • 打赏
  • 举报
回复
看一下.net本质论,找找里面resolve DLL的部分。自己看是最管用的。
mmbf001 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 bingdian37 的回复:]
可以加载其他目录的DLL

楼主描述相当不清楚

思路也有些混乱

第一:Assembly是指的程序集,你想动态加载几个类没有问题,不过,动态从源代码加载就没必要了吧,编译为dll如何?

第二:楼主应该从基础做起,熟悉一些基本概念,放下望远镜,用显微镜去仔细看看你所接触的东西

至于appcode,你对asp。net太不了解了,甚至不知道asp。net程序结构,appcode是要编译的,自动编译的。。。并非你想的那样
[/Quote]
是的,其实你说的问题一直在我心里~...我也觉得我跳的太快了...一点不扎实...有时会遇到一些很傻的问题不懂...
第一:能否简单说下从源码动态如何加载类?
第二: 编译为dll后是不成问题,那么应该appcode的原理也是一样的,被编译成了带符号信息的中间码后才被反射的吧?能否稍微深入的帮我解释下这个过程,比如appcode是什么时候被编译的?最好能帮助我理解下反射appcode的过程....
谢谢...
螳螂86 2009-04-03
  • 打赏
  • 举报
回复
麻烦高手看下菜鸟的帖子,帮忙处理下,已经快1天了:http://topic.csdn.net/u/20090403/13/f94c86d3-d31c-4867-8845-1344655078ce.html
bingdian37 2009-04-03
  • 打赏
  • 举报
回复
可以加载其他目录的DLL

楼主描述相当不清楚

思路也有些混乱

第一:Assembly是指的程序集,你想动态加载几个类没有问题,不过,动态从源代码加载就没必要了吧,编译为dll如何?

第二:楼主应该从基础做起,熟悉一些基本概念,放下望远镜,用显微镜去仔细看看你所接触的东西

至于appcode,你对asp。net太不了解了,甚至不知道asp。net程序结构,appcode是要编译的,自动编译的。。。并非你想的那样

cpp2017 2009-04-03
  • 打赏
  • 举报
回复
app_code不是例外,app_code与bin的作用是相似的.一种是以代码运行,一种是编译后运行.

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧