Передача имени класса и создание экземпляра соответствующего объекта - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д