У меня есть следующие классы winforms:
class EntityEditorForm<T>: System.Windows.Forms.Form
where T: ICloneable<T> {}
class EntityCollectionEditorForm<T> : System.Windows.Forms.Form
where T: ICloneable<T> {}
Первый класс форм - это редактор для <T>
, который создает элементы управления во время выполнения в зависимости от типа T.
Второй - менеджер для коллекции <T>
и имеет функции Добавить, Редактировать и Удалить. Коллекция отображается в элементе управления списком с полями, заполненными посредством отражения с использованием пользовательских атрибутов.
Код для кнопок «Добавить» и «Редактировать» выглядит следующим образом:
private void buttonEdit_Click (object sender, System.EventArgs e)
{
T entity = default(T);
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}
private void buttonEdit_Click (object sender, System.EventArgs e)
{
T entity = new T(); //This is the code which is causing issues
entity = (T) this.listView.SelectedItems[0].Tag;
new EntityEditor<T>(entity).ShowDialog(this);
}
default(T)
работает в случае редактирования, но у меня проблемы со сценарием добавления. T entity = new T();
не представляется законным.