Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2011, 10:39   #1
AgentSmit
Пользователь
 
Аватар для AgentSmit
 
Регистрация: 17.02.2010
Сообщений: 50
По умолчанию Использование формы из DLL-сборки

Доброго времени суток, коллеги!
У меня имеется такая задача: нужно загружать формы из NET-сборки в основное приложение (предполагается что в динамически подключаемых DLL имеется разные формы и есть заранее известный набор функций). Подскажите как это можно реализовать или хотя бы ссылку. В и-нете роюсь уже не первый день.
Encode the world
AgentSmit вне форума Ответить с цитированием
Старый 10.10.2011, 11:28   #2
AgentSmit
Пользователь
 
Аватар для AgentSmit
 
Регистрация: 17.02.2010
Сообщений: 50
По умолчанию

Все разобрался методом проб и ошибок.
Делается следующим образом:
Добавляем в DLL форму в вызываемой функции пишем:
Код:
namespace TestLib
{
    public class Class1
    {
        public void Start()
        {
            Form1 MyFrm = new Form1();
            MyFrm.ShowDialog(); //Если использовать MyFrm.Show(); вылетит с ошибкой.
        }
    }
}
И далее вызываем функцию из сборки:

Код:
Assembly testAssembly = Assembly.LoadFrom("Filename.dll");
                Type curType = null;
                object currentAssembly;
                foreach (Type type in testAssembly.GetTypes())
                {
                    if (type.IsClass)
                    {
                        currentAssembly = testAssembly.CreateInstance(type.FullName);
                        curType = type;
                    }
                }
                Type ExtAssemblyType = testAssembly.GetType(curType.FullName);
                object ExtAssembly = Activator.CreateInstance(ExtAssemblyType);
                curType.InvokeMember("Start",BindingFlags.Default|BindingFlags.InvokeMethod,null,ExtAssembly,new object[]{});
В итоге имеем модальный диалог бокс, а большего и не требовалось.
Encode the world
AgentSmit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование функций в C++ из DLL. VintProg Общие вопросы C/C++ 5 04.09.2011 03:02
Сборка и использование DLL Foxtrot_1 Общие вопросы C/C++ 1 27.05.2011 12:13
Использование Dll xmaksimca Общие вопросы Delphi 0 16.05.2010 18:36
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00
Использование dll Gromsky Общие вопросы C/C++ 1 10.02.2009 21:06