Общее ограничение типа для интерфейса?

Я могу сделать это:

void MyMethod<T>() where T : class { }

Есть что-нибудь подобное?

void MyMethod<T>() where T : interface { }

Я бы предпочел не указывать имя интерфейса явно.

Альтернативой является то, что я могу передать аргумент, который ограничен class и бросить исключение, если typeof(T).IsInterface возвращает false, но это не так чисто, как ограничение.

1 ответ

Это не имеет смысла, поскольку не приводит к каким-либо ограничениям.

скованность class означает, что аргумент типа должен быть ссылочным типом.

И что interface без явного имени интерфейса должны ограничивать?

Сам интерфейс является просто объявлением методов / свойств, поэтому ограничение "что-то есть интерфейс" буквально означает "что-то имеет некоторые объявления" - это бесполезно.

Другие вопросы по тегам