c # создание экземпляров классов программно - PullRequest
0 голосов
/ 09 ноября 2010

возможно ли создавать экземпляры класса программно?

например, мне нужно будет создать из 10-20 форм программно

так я сделаю:

   Form graphs = new Form1(dateStart.Value.ToShortDateString(), dateEnd.Value.ToShortDateString(),cbQCValues.Text,cbAnalytes.Text,cbInstruments.Text);

однако конструкторы будут отличаться каждый раз, поэтому мне нужно поместить это в цикл for

так что мне нужно будет запускать приведенный выше код столько раз, сколько мне нужно. например 10-20 раз. Мне нужно будет иметь классы форм graphs1, graphs2, graphs3 ...

это возможно?

Ответы [ 4 ]

4 голосов
/ 09 ноября 2010

Я бы порекомендовал вам взглянуть на шаблон дизайна фабрики. Есть много вариантов, в зависимости от того, чего вы пытаетесь достичь.

Вы можете найти это полезным: http://www.dofactory.com/Patterns/Patterns.aspx

4 голосов
/ 09 ноября 2010

Не уверен, правильно ли я понимаю, но вы после этого ??

List<Form1> forms = new List<Form1>();
for(int i=0;i<20;i++)
{
    forms.Add(new Form1(, ......))
}
1 голос
/ 09 ноября 2010

Конечно, вы можете создавать новые классы во время выполнения, но я подозреваю, что вы задаете неправильный вопрос здесь.Если вам нужно только добавить случайные элементы управления в форму, просто создайте новый объект Form и добавьте эти элементы управления.Если вам действительно нужно создавать новые классы во время выполнения, взгляните на пространство имен System.Reflection.Emit.

Если вы считаете, что это расплывчатый ответ, вам следует написать менее расплывчатый вопрос.;)

0 голосов
/ 09 ноября 2010

Используйте класс Activator, предоставляемый платформой:

   public T CreateInstance<T>() where T: new() {

     return (T)Activator.CreateInstane(Assembly.GetEntryAssembly().CodeBase, 
                                     typeof(SomeType).FullName)

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...