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);
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!