Библиотека, которую я использую, содержит этот метод:
T TheirMethod<T>() where T : Base; // T must inherit from Base
В моем коде есть этот метод:
T MyMethod<T>() // it can be any T here
{
if (!typeof(T).IsSubclassOf(typeof(Base)))
throw new Exception("I'm fine with crashing at runtime here");
return x.TheirMethod<T>(); // DOES NOT COMPILE
}
Конечно, это не компилируется, потому что компиляторне достаточно умен, чтобы статически доказать, что мой T
является Base
.(Я не могу добавить ограничение where
к MyMethod
, потому что оно реализует другой сторонний интерфейс.)
Мой вопрос: как я могу это вызвать в любом случае?Я бы хотел, чтобы эта проверка была выполнена во время выполнения.