Да. Тип KeyValuePair ожидает два параметра общего типа. Мы можем либо заполнить их, указав на конкретные типы:
IEnumerable<KeyValuePair<string, int>>
Или мы можем заполнить их, используя другие общие параметры, уже указанные внешним классом:
class Dictionary<TKey, TValue> : IEnumerable<KeyValuePair<TKey, TValue>>
Параметры общего типа всегда указываются «при использовании» или в точке, где вы используете класс или метод, который требует их. И, как и любой другой параметр, вы можете заполнить его постоянным, жестко запрограммированным значением (или типом в данном случае) или другой переменной.