Общее ограничение типа для интерфейса?
Я могу сделать это:
void MyMethod<T>() where T : class { }
Есть что-нибудь подобное?
void MyMethod<T>() where T : interface { }
Я бы предпочел не указывать имя интерфейса явно.
Альтернативой является то, что я могу передать аргумент, который ограничен class
и бросить исключение, если typeof(T).IsInterface
возвращает false, но это не так чисто, как ограничение.
1 ответ
Это не имеет смысла, поскольку не приводит к каким-либо ограничениям.
скованность class
означает, что аргумент типа должен быть ссылочным типом.
И что interface
без явного имени интерфейса должны ограничивать?
Сам интерфейс является просто объявлением методов / свойств, поэтому ограничение "что-то есть интерфейс" буквально означает "что-то имеет некоторые объявления" - это бесполезно.