C# <-> Dll

Тема в разделе ".NET", создана пользователем Dottik, 3 дек 2006.

Статус темы:
Закрыта.
  1. Dottik

    Dottik Гость

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

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

    Как быть если на перед не известно сколько будет библиотек?
     
  2. Dottik

    Dottik Гость

    Спасибо, я уже разобрался :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);
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей