Чтение сведений о типе из упомянутой dll/ сборки

У меня есть два файла DLL, скажем, DataLayer.dll и ProcessLayer.dll. DataLayer.dll имеет класс MyClass, как показано ниже:

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

и я сослался на DataLayer.dll во второй сборке ProcessLayer.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 любую идею?

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);
Другие вопросы по тегам