C# шаблон проверка типа T

109
10 сентября 2021, 12:30

Есть такой Метод

List<T> GetAll<T>() where T : IModel

И набор классов реализующих интерфейс IModel

Вот использование такого метода:

var users = GetAll<User>();
var custommers = GetAll<Custommer>();

Как мне в методе GetAll проверить какому именно классу принадлежит T? Я пробовал так, но компилятор ругается

List<T> GetAll<T>() where T : IModel
{
if(T.GetType() == User)
//some Code
}
Answer 1

С# язык с сильной типизацией и имеет набор методов и операторов, позволяющих получить тип Сущности. Есть метод object.GetType который возвращает тип существующего объекта.

var user = new User();
user.GetType(); // вернёт объект типа type который описывает тип User.

А так же существует оператор typeof который работает на уровне классов:

var user = new User();
typeof(user/*objectName*/); // ERROR
typeof(User/*className*/);// всё ок

Решение моей задачи:

if (typeof(T) == typeof(Tarif))
                //some code
else
                //other code
READ ALSO
Можно ли конвертировать дамп базы данных SQlite в MySQL?

Можно ли конвертировать дамп базы данных SQlite в MySQL?

Есть дамп базы SQlite, мне нужно получить скрипт для создания такой же базы данных с полями и тд, для MySqlДамп я сделал, заменил в нем AUTOINCREMENT на AUTO_INCREMENT

98
SQL select из четырех таблиц

SQL select из четырех таблиц

Не знаю какую конструкцию mysql использоватьУ меня есть четыре таблицы:

125
Ошибка MySql при поиске на сайте

Ошибка MySql при поиске на сайте

Перенесли сайт на новый VDS серверПытаемся воспользоваться поиском, переходит на страницу поиска и пишет DB query error

158
Как правильно написать MVC роутер?

Как правильно написать MVC роутер?

Всем приветСделал небольшую MVC

113