如何利用反射得到中间层中的所有类

loveyun9807 2005-10-24 09:27:32
建立一个中间层项目.里面有很多中间层类,如何利用反射得到中间层中的所有类,并调用类中的方法!
...全文
346 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
伍华聪 2005-10-26
  • 打赏
  • 举报
回复
ding yi xia
vickyyu 2005-10-25
  • 打赏
  • 举报
回复
using System.Reflection;
----------------------------------------------------------------

Assembly a = Assembly.LoadFrom(@"D:\MaryKay\CommonBasic\bin\MaryKay.CommonBasic.dll");
foreach(Type t in a.GetTypes())
{
Response.Write(t.NameSpace);//类的命名空间
Response.Write(t.Name);//类的名称
}
vickyyu 2005-10-25
  • 打赏
  • 举报
回复
假设另一个工程中的所有类都编译到一个dll文件中了,在这很多的类当中,有一个类叫StringUtil,名称空间在HSMP.CommonBasic.Common下
该类中有一个方法:
public double GetSum(double x,double y)
{
return x+y;
}
编译后dll文件的存放路径是:D:\Test\HSMP.CommonBasic.dll
现在的问题是,如何通过程序调用该dll文件中的GetSum方法
大概有以下几步:
using System.Reflection;
A.
//这里要用LoadFrom,只有在本工程里添加了该dll的引用后才可以使用Load
Assembly objAss = Assembly.LoadFrom(@"D:\Test\HSMP.CommonBasic.dll");
//HSMP.CommonBasic.Common.StringUtil类的全路径
Type t=objAss.GetType("HSMP.CommonBasic.Common.StringUtil");
//动态生成类StringUtil的实例
object obj=System.Activator.CreateInstance(t);
//参数信息,GetSum需要两个int参数,如果方法没有参数,就声明一个长度为0的数组
System.Type[] paramTypes = new System.Type[2];
paramTypes[0] = System.Type.GetType("System.Int32");
paramTypes[1] = System.Type.GetType("System.Int32");
//找到对应的方法
MethodInfo p = t.GetMethod("SayHello", paramTypes)
//参数值,如果所调用的方法没有参数,不用写这些
Object[] parameters = new Object[2];
parameters[0] = 3;
parameters[1] = 4;
object objRetval = p.Invoke(obj, parameters); //如果没有参数,写null即可。
naturalth 2005-10-25
  • 打赏
  • 举报
回复
Dim asb As [Assembly] = [Assembly].GetExecutingAssembly
Dim tForm As Type = asb.GetType("BAOPACKERP." & Me.mstrFormDetail)
Dim oNew As Object() = New Object() {ID}
Dim frm As Form = Activator.CreateInstance(tForm, oNew)

frm.ShowDialog()


teng
loveyun9807 2005-10-24
  • 打赏
  • 举报
回复
如何实例化带参数的类啊!!请指点!
goody9807 2005-10-24
  • 打赏
  • 举报
回复
http://search.microsoft.com/search/results.aspx?view=zh-cn&st=a&na=81&qu=%e5%8f%8d%e5%b0%84
webdiyer 2005-10-24
  • 打赏
  • 举报
回复
直接下载个reflector自己看得了:

http://www.aisto.com/roeder/dotnet/
huisz 2005-10-24
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4318/4318117.xml?temp=9.945315E-02
tigerwen01 2005-10-24
  • 打赏
  • 举报
回复
要使用反射首先要引用System.Reflection类
xiaofeixia__9999 2005-10-24
  • 打赏
  • 举报
回复
呵呵,他可能实例化了seal类,出现获得零参数的提示
hpn_cao 2005-10-24
  • 打赏
  • 举报
回复
System.Activator.CreateInstance(...)
带不带参数都一样.
webdiyer 2005-10-24
  • 打赏
  • 举报
回复
如何实例化带参数的类?

什么意思呢?你是不会传递参数吗?

62,046

社区成员

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

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

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

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