Перегрузка общего интерфейса. Правильная терминология?

Вот очень простой пример перегрузки методов, двух методов с одинаковым именем, но с разными сигнатурами:

int MyMethod(int a)
int MyMethod(int a, string b)

Теперь допустим, что я определил два общих интерфейса, имеющих одно и то же имя, но с разным количеством параметров типа, таких как:

IMyInterface<T>
IMyInterface<T1,T2>

Могу ли я сказать, что это означает "перегрузку универсального интерфейса"? Или термин "перегрузка" относится только к методам в таком контексте? Тем не менее, это выглядит очень похоже на перегрузку методов, в том смысле, что мы сохраняем одно и то же имя, но меняем параметры.

Если я не могу сказать "универсальная перегрузка / перегрузка интерфейса", что я могу сказать об этих двух разных интерфейсах, имеющих одно и то же имя?

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

1 ответ

Решение

Типы с одинаковыми именами, но с разным количеством параметров универсального типа (включая ноль) - это просто разные типы. Термин "перегрузка" здесь не применяется. Перегрузка действительно применима только к методам, принадлежащим к одному и тому же типу и имеющим одинаковое имя, но разные подписи.


Очень распространено иметь общий и неуниверсальный интерфейс с тем же именем

public interface IList : ICollection, IEnumerable

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable

Их просто называют родовыми и неуниверсальными.


ОБНОВИТЬ

Имя.NET универсального типа - это имя типа, оканчивающееся серьезным акцентом (`), и число параметров типа. Например тип IMyType<T> в C# или IMyType(Of T) в VB переводится на

IMyType`1

внутренне. <T> на самом деле это просто синтаксическая конструкция C#, которая переводится на внутреннее имя.NET, используемое CLR.

IMyType<T,U> будет переведен на

IMyType`2

Это ясно показывает, что типы с одинаковыми именами в C#, отличающиеся только количеством своих параметров универсальных типов, относятся к (CLR-) типам реальности с разными именами.

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