• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

C# <-> Dll

  • Автор темы Автор темы Dottik
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
D

Dottik

Как динамически (во время выполнения программы) связать class с необходимой мне dll classlibrary?

например в A.dll и B.dll описанно два одинаковых класса (но разные реализации методов)
перед компиляцией мне не известно какой класс нужно будет использовать. Как мне подключить необходимый?

Как быть если на перед не известно сколько будет библиотек?
 
Спасибо, я уже разобрался :rolleyes:

Если у вас возникнет такая проблема, вот решение:

Assembly t = Assembly.LoadFile("d:\\1.dll"); связываемся с длл
Console.WriteLine(t.FullName);
Type[] types = t.GetTypes(); список классов, интерфейсов и тд из длл
Type ourT = null;
foreach (Type dt in types) ищим наш класс
{
if (dt.Name == "MyClass")
{
ourT = dt;
break;
}
}
MemberInfo[] mInfo = ourT.GetMethods(); получить список методов
foreach (MemberInfo m in mInfo)
{
Console.WriteLine(m.Name);
}
Object[] arg = new Object[] { 12 };
BindingFlags bf = BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; параметры доступа
Object obj = ourT.InvokeMember(null, bf | BindingFlags.CreateInstance, null, null, args); создание экземпляра
Console.WriteLine(obj.GetType().ToString());
string s = (string)ourT.InvokeMember("Work", bf | BindingFlags.InvokeMethod, null, obj, null); вызов метода
Console.WriteLine(s);
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab