Загрузка ресурсов
От: welaribo  
Дата: 23.05.06 20:00
Оценка:
Подскажите, стандартная вещь, но я такое раньше не делал. В dll лежат набор форм, производные от одного базового класса. Их необходимо загружать в основной проект. То есть имеем следующее:
Dll:
Form1 : FormBase.
Form2 : FormBase

Они сохраняются в массиве. Затем из проекта нуна работать с той или другой формой. Вот как все это организовать. Загрузить – загружаю как массив Form, но тогда недоступны свойства и методы самой реализации Form1, Form2 и так далее.

Вот такой вопрос. Может не все ясно изложил – но должно быть понятно. Что необходимо использовать, что почитать мне для реализации такой штуки?
Re: Загрузка ресурсов
От: vhonest  
Дата: 23.05.06 20:55
Оценка:
Здравствуйте, welaribo, Вы писали:

W>Загрузить – загружаю как массив Form, но тогда недоступны свойства и методы самой реализации Form1, Form2 и так далее.

Если не получается сделать полиморфные классы, то всегда можно привести к производному типу. Разве нет?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Загрузка ресурсов
От: jorj  
Дата: 15.06.06 14:41
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.