Другим предостережением, которое следует учитывать в этом сценарии, является тот факт, что использование «где T: <% вашего базового интерфейса или абстракции%>» может быть чрезмерно использовано в обобщениях, делая ваш универсальный тип не универсальным по своей природе.
IE: Помните, что изолируя ваш универсальный метод от IMyInterface, вы изолируете этот метод только от тех типов, которые реализуют IMyInterface. Так что, если вы просто решили использовать IMyInterface, основанный на хороших принципах ООП, но у вас есть только один (или в некоторых случаях очень небольшое количество) потенциальный тип в любом месте, который будет реализовывать этот интерфейс, то вы победили цель использования дженериков. При таких обстоятельствах первый вариант будет лучше.
Используйте «где» только для вашего универсального типа, когда вы собираетесь использовать более широкий диапазон типов, которые фактически реализуют IMyInterface.