Создание экземпляра обобщенного типа C#

277
13 сентября 2017, 10:44

Есть метод со следующей сигнатурой:

public IEnumerable<T> Find<T>(string predicate) where T : IDbModel;

Существует абстрактный класс (от которого в будущем будут наследоваться остальные классы), который реализует данный метод:

public IEnumerable<T> Find<T>(string predicate) where T : IDbModel
{
    // do something
    //need to create instance of type T like this: T obj = new T()
}

Существует ли возможность создания объектов обобщенных типов?

p.s. Пишу очень-очень скромную версию Eloquent ORM как в Laravel

Answer 1

Да, добавьте constraint new() на параметр генерика, и вы сможете создавать объекты через new T():

public IEnumerable<T> Find<T>(string predicate) where T : IDbModel, new()
{
    T obj = new T();
    // ...
}
READ ALSO
Доступ к Windows Form из другой формы

Доступ к Windows Form из другой формы

Две формы (form1, form2), 2 класса, в первом

279
Повторяющиеся слова в `.txt`

Повторяющиеся слова в `.txt`

Как найти все слова, которые повторяются вtxt файле, и вывести их на экран ?

372
Закрытие вкладок tabPage в tabControl c#

Закрытие вкладок tabPage в tabControl c#

Подскажите пожалуйста, как в TabControl закрывая последнюю вкладку, сделать активной предыдущую вкладкуПример: Допустим четыре вкладки - закрывая...

459
Как сделать в Unity слайдер, который будет отвечать за скорость передвижения объекта?

Как сделать в Unity слайдер, который будет отвечать за скорость передвижения объекта?

У меня есть поезд, которые двигается по горизонталиИмеется слайдер, который должен отвечать за скорость передвижения поезда

460