Передача имени класса и создание экземпляра соответствующего объекта - C#
Формулировка задачи:
Добрый день!
В моем приложении часто используется код:
где ImportForm - один из многих классов форм ввода/редактирования данных. Конструктору в качестве параметра передается экземпляр главной формы для работы с её некоторыми объектами.
Хочется не нарушать принцип Don't repeat yourself и написать общий метод для вызова дочерних форм.
С помощью найденных примеров задачу решить не удаётся.
Например так:
выдает ошибку: "Ссылка на объект не указывает на экземпляр объекта."
Или так:
выдает ошибку: "Ссылка на объект не указывает на экземпляр объекта."
Еще пробовал так:
Тут проблема с передачей параметра в конструкторе.
Какой из всех подходов более правильный, простой, быстрый? Пожалуйста, помогите!
if (!Dialogs.connectedToDB()) return;
ImportForm imvf = new ImportForm(this);
imvf.ShowDialog();Type type = classObj.GetType();
ConstructorInfo constructor = type.GetConstructor(new Type[] {typeof(classObj)});
object newObject = constructor.Invoke(null);
MethodInfo methodInfo = type.GetMethod("ShowDialog()");
methodInfo.Invoke(newObject, null)object apf;
apf = Activator.CreateInstance(type);
MethodInfo mi = type.GetMethod("ShowDialog()");
mi.Invoke(apf, null); static void ShowSingleForm<TForm>(int id, DataGridView dgv, MainForm mf, Type type) where TForm : Form, new()
{
TForm form = Application.OpenForms.OfType<TForm>().FirstOrDefault();
form = new TForm();
form.Show();
}Решение задачи: «Передача имени класса и создание экземпляра соответствующего объекта»
textual
Листинг программы
using System;
public class Example
{
public static void Main()
{
// Initialize array of characters from a to z.
Char[] chars = new Char[26];
for (int ctr = 0; ctr < 26; ctr++)
chars[ctr] = (char) (ctr + 0x0061);
Object obj = Activator.CreateInstance(typeof(String),
new Object[] { chars, 13, 10 } );
Console.WriteLine(obj);
}
}
// The example displays the following output:
// nopqrstuvw