Перегрузка общего интерфейса. Правильная терминология?
Вот очень простой пример перегрузки методов, двух методов с одинаковым именем, но с разными сигнатурами:
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-) типам реальности с разными именами.