Подскажите, стандартная вещь, но я такое раньше не делал. В dll лежат набор форм, производные от одного базового класса. Их необходимо загружать в основной проект. То есть имеем следующее:
Dll:
Form1 : FormBase.
Form2 : FormBase
…
Они сохраняются в массиве. Затем из проекта нуна работать с той или другой формой. Вот как все это организовать. Загрузить – загружаю как массив Form, но тогда недоступны свойства и методы самой реализации Form1, Form2 и так далее.
Вот такой вопрос. Может не все ясно изложил – но должно быть понятно. Что необходимо использовать, что почитать мне для реализации такой штуки?
Здравствуйте, welaribo, Вы писали:
W>Загрузить – загружаю как массив Form, но тогда недоступны свойства и методы самой реализации Form1, Form2 и так далее.
Если не получается сделать полиморфные классы, то всегда можно привести к производному типу. Разве нет?

... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, welaribo, Вы писали:
W>Они сохраняются в массиве. Затем из проекта нуна работать с той или другой формой. Вот как все это организовать. Загрузить – загружаю как массив Form, но тогда недоступны свойства и методы самой реализации Form1, Form2 и так далее.
Как я понял у тебя есть массив
Form[] formArray = new Form[] { new Form1(), new Form2(), new Form3(), ... }
теперь в вызывающем коде тебе необходимо получить конкретный экземпляр. Это верно?
Если так то возможны два варианта, в принципе похожих:
1. В вызывающем коде мы знаем на каком месте какая форма расположена, тогда решение:
Form2 form2 = (Form2) formArray[ 1 ]; // либо formArray[ 1 ] as Form2;
2. В вызывающем коде мы знаем только нужный класс формы, другое решение:
мы делаем что-то типа factory:
// где-то рядом с массивом
public static Form GetFormByType( Type formType )
{
...
// логика по поиску индекса формы заданного типа
...
return formArray[foundIndex];
}
...
// вызывающий код
Form2 form2 = (Form2) GetFormByType(typeof( Form2 ));
Ну вроде бы как-то так, если я правильно понял исходную задачу.
---
Enjoy In Silence
Sent via RSDN@Home 1.1.4 stable SR1 rev. 568