Есть ли способ получить следующее объявление функции?
public bool Foo<T>() where T : interface;
т. где T - тип интерфейса (аналогично where T : class
и struct
).
В настоящее время я решил:
public bool Foo<T>() where T : IBase;
Где IBase определяется как пустой интерфейс, который наследуется всеми моими интерфейсами... Не идеально, но он должен работать... Почему вы не можете определить, что общий тип должен быть интерфейсом?
Для чего я хочу это, потому что Foo
делает отражение, где ему нужен тип интерфейса... Я мог бы передать его как обычный параметр и выполнить необходимую проверку самой функции, но это казалось много более типичных (и я полагаю, немного более результативным, так как все проверки выполняются в compiletime).