При создании метода расширения с обобщениями не может предоставить аргументы при создании экземпляра типа переменной Ошибка - PullRequest
0 голосов
/ 12 октября 2019
    public static void MdiBroShow<TForm, T>(this Form form, T entity, DbContext db)
        where TForm : Form, new() where T : class, new()
    {
        if (form.MdiParent == null)
        {
            throw new Exception("Error");
        }
        TForm frm = new TForm(entity);   //error
        frm.MdiParent = form.MdiParent;
        frm.Show();
    }

Я хочу создать метод расширения для использования при создании любой формы. Этот метод расширения находится в другом проекте, чем я буду использовать. Entity будет объектом класса, и я отправлю его в форме как generic. НоЯ не смог отправить его как параметр. Как я могу решить это?

1 Ответ

0 голосов
/ 12 октября 2019

Хотя это возможный дубликат, но у другого вопроса есть лот разных ответов. И здесь достаточно контекста, чтобы рекомендовать здесь одно простое решение. В частности, этот код создает отображение новой формы, поэтому это не критичный к производительности метод, поэтому достаточно простое решение:

TForm frm = (TForm)Activator.CreateInstance(typeof(TForm), entity);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...