• Лови промокод з яким знижка 50 грн - promo50grn

c# динамическое использование dll'ек

Статус: Offline
Реєстрація: 01.07.2008
Повідом.: 915
c# динамическое использование dll'ек

Друзья! Помогите пожалуста примерчиком.
Есть dll библиотека классов с#.
Например с одним классом
Код:
namespace DynoDll
{
    public class Majestic
    {
        private int _a;
        public Majestic(int a)
        {
            _a = a;
        }
        public int Result()
        {
            return _a;
        }
    }
}

Надо написать консольную програмульку, использующую данную библиотеку, причем необходимо, чтоб путь к этой библиотеке можно было указывать как аргумент коммандной строки, а не сразу привязываться к ней перед компиляцией, задавая ее в References.
Например >MajUs.exe C:\DynoDll.dll

Код:
using System;
using DynoDll;
namespace MajUs
{
    class Program
    {
        static void Main(string[] args)
        {
             string pathToDll = args[0].ToString();

             Majestic maj = new Majestic(10);
             Console.WriteLine(maj.Result().ToString());
             Console.ReadKey();             
        }
    }
}
 
копай пространство имён System.Reflection

Код:
Assembly asm = Assembly.LoadFrom("asm.dll");

Type type = asm.GetType("DynoDll.Majestic");

object getDllInstance = Activator.CreateInstance(type,15);
MethodInfo metinf = type.GetMethod("Result");
          
Console.WriteLine(metinf.Invoke(getDllInstance, null));

можно проще если в клиентском (для dll) приложении есть интерфейс который реализован внутри dll. Тогда не нужно будет получать методы на лету.
 
Останнє редагування:
Kagemaru: за интерфейс +100!

При этом, если DLLку может потребоваться впоследствии выгрузить, нужно будет создать еще один AppDomain и загрузить DLL (сборку) туда.

P.S. Для более подробной информации гугли статейки про реализацию плагинов на .NET - это как раз твой случай.
 
Спасибо огромное!

Ктати выложу тут пару ссылочек, что нашел в гугле с примерчиками, может кому-то понадобится..
Тільки зареєстровані користувачі бачать весь контент у цьому розділі

Тільки зареєстровані користувачі бачать весь контент у цьому розділі
 
Назад
Зверху Знизу