【发布时间】:2016-06-06 13:13:18
【问题描述】:
我有两个 dll 文件,比如说 DataLayer.dll 和 ProcessLayer.dll。 DataLayer.dll 有一个名为 MyClass 的类,如下所示:
public class MyClass
{
public string name;
public int age;
public string aadhar;
}
我已经在第二个程序集 ProcessLayer.dll 中引用了 DataLayer.dll,它有一个输入参数为 MyClass 的方法。
using DataLayer;
namespace ProcessLayer
{
public class Process
{
public int GetMyClass(MyClass objMy)
{
return objMy.age;
}
}
}
如何使用反射从ProcessLayer.dll 读取所有方法参数?我正在使用
Assembly assembly = Assembly.LoadFile(@"C:\ProcessLayer.dll");
foreach (Type _type in assembly.GetTypes())
{
foreach (var method in _type.GetMethods())
{
var parameters = method.GetParameters();
}
}
并在尝试执行method.GetParameters(); 语句时出错。
你能帮帮我吗?
如何通过 Mono.cecil 获得它?
【问题讨论】:
-
method.GetParameters()出现什么错误? -
得到“无法加载文件或程序集 'DataLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。系统找不到指定的文件。”错误
-
从不、从、从使用 LoadFile()。在这种情况下,普通的 Load() 应该可以工作。如果您真的需要指定路径,请使用 LoadFrom()。希望你不这样做,当你开始从根目录加载程序集时,没有什么好事发生。
标签: c# .net system.reflection mono.cecil assembly.reflectiononly