c#反射问题

JiaoPengJay 2012-09-13 11:51:43
先看下代码
            assembly_name.assembly_class cc = new assembly_name.assembly_class();
string value = cc.Show_Str("");

这段中"assembly_name"是dll文件的某个名称空间;"assembly_class"是该名称空间下的类,上边是可以正常执行的
看看下边的反射
object ab = Assembly.Load("assembly_name").CreateInstance("assembly_name.assembly_class");

这样就不行提示
未能加载文件或程序集“assembly_name”或它的某一个依赖项。系统找不到指定的文件。
问,Assembly.Load()是不是不能访问dll文件里的;
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
JiaoPengJay 2012-09-13
  • 打赏
  • 举报
回复
问题已解决,代码如下;

Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Bin/App_Code.dll");

//获取类型
Type type = assembly.GetType("assembly_name.assembly_class");

//创建该对象的实例
object instance = assembly.CreateInstance("assembly_name.assembly_class");

Type[] paramType = new Type[1];
paramType[0] = Type.GetType("System.String");

Object[] paramObj = new Object[1];
paramObj[0] = "";

//调用方法
object value = type.GetMethod("Show_Str", paramType).Invoke(instance, paramObj);

有个问题,就是"assembly.GetType("assembly_name.assembly_class");"GetType(名称空间+类名)这里有的类里面没有名称空间怎么办,我也试过不加名称空间是不行的,请问有没有这方面的解决办法;
画龙添脚 2012-09-13
  • 打赏
  • 举报
回复
是dll名称
画龙添脚 2012-09-13
  • 打赏
  • 举报
回复
是dll名称
勿忘心安Billy 2012-09-13
  • 打赏
  • 举报
回复
使用反射之前,你所调用的dll是需要被项目所引用的。
其次,确定你的命名空间和类名是否正确。
确定这两点一般都是没什么问题的

62,046

社区成员

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

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

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

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