1

DataLayer.dll と ProcessLayer.dll の 2 つの dll ファイルがあります。DataLayer.dll には、以下のような MyClass というクラスがあります。

public class MyClass
{
public string name;
public int age;
public string aadhar;
}

そして、MyClass として入力パラメーターを持つ 1 つのメソッドを持つ 2 番目のアセンブリ ProcessLayer.dll で DataLayer.dll を参照しました。

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 でそれを取得する方法はありますか?

4

1 に答える 1

1

アセンブリをロードし、型を取得してから、目的の型のメソッドを取得する必要があります。

var myAssembly Assembly.LoadFrom(@"..\ProcessLayer.dll");
var myAssemblyTypes =  myAssembly.GetTypes();
var firstType = myAssemblyTypes[0];
var firstTypeMethods = firstType.GetMethods();
var firstTypeFirstMethod = firstTypeMethods[0];
var params = firstTypeFirstMethod.GetParameters();

別のアセンブリからの型が必要な場合は、これを読み込むことができます。インスタンス化も必要になる場合があります。

Assembly assembly = Assembly.LoadFrom("Assembly.LoadFile(@"..\DataLayer.dll");
Type missingType = assembly.GetType(<your missing type>);
var createTypeInstance = Activator.CreateInstance(missingType);
于 2016-06-06T13:28:38.530 に答える