There are three kinds of generic types. To make it short, in this (simplified) declaration:
public class Dictionary : IEnumerable>
Dictionary
is an unbounded generic type.
KeyValuePair
is, in this case, an open constructed generic type. It has some type parameters, but they are already defined elsewhere (in Dictionary, in this case).
Dictionary
would be a closed constructed generic type.