У меня есть общий метод (см. Код ниже) и вы хотите выполнить какое-либо действие, если T - конкретный интерфейс.
Очевидно, я мог бы просто сделать typeof(T).IsAssignableFrom(IFoo)
, но отражение сравнительно медленное, поэтому я хочу избежать его, если это возможно.Тестирование типового параметра типа для интерфейса
Теперь я знаю, что у меня не может быть другого метода с ограничением, потому что я получу двусмысленную ошибку метода, иначе я бы просто сделал это.
Есть ли способ делать то, что я хочу?
Является ли тот факт, что я хочу сделать это, указать на некоторые архитектурные проблемы?
public T Load<T>(string name)
{
T result = LoadFromName<T>(name);
if(T is IFoo) // Obviously doesn't work as T is a type, not a variable
(result as IFoo).FooMethod();
return result;
}
Не могу поверить, насколько я был глупым! –