У меня есть метод, с которым я передаю IEnumerable<TModel>
. Затем, в зависимости от типа TModel
, метод выполняет набор инструкций, как показано ниже:C# Получить тип IEnumerable <TModel>
public void MyMethod<TModel>(IEnumerable<TModel> items) where TModel : class
{
int operationType;
switch (typeof(TModel))
{
case typeof(MyModelOne):
operationType = 1;
break;
case typeof(MyModelTwo):
operationType = 2;
break;
case typeof(MyModelThree):
operationType = 3;
break;
default:
throw new Exception("The collection model passed to MyMethod is not recognized");
}
...
}
Это не работает, я получаю ошибку:
Там нет переменного приложения или memeber «TModel»
+1, но хотя typeof() является быстрым и легким, вероятно, лучше и понятнее получать только один тип родового. То есть Тип type = typeof (TModel); if (type == typeof (MyModelOne)) {} – GenericTypeTea
@GenericTypeTea: Да. К тому времени, когда я печатал второй 'if', я уже написал' typeof (TModel) == ... 'и не стал возвращаться :) Скорее всего, это не повлияет. –
Нет, будет означать, что он сидит на корточках в великой схеме вещей. Просто быть разборчивым, потому что вы избили меня до ответа = P. – GenericTypeTea