Translate to nooblang. :O
'Neurolinguistic Programming' is even harder to answer.
I'll try to explain (from what I understand here):
You have a list of 'templates'.
These are the 'generic' classes.
By generic, one simply means 'all-round', 'not specific'.
Let's try to do an analogy:
I have defined the generic type 'list'.
We all know what a list is, but the computer will never know
what on earth you want to make it a list of,
or what you want to put in that list.
Therefor, later, you put a bunch of humans in that list, for example (lol).
Now, it is a list of humans.
Code example:
List<Human> humans = new List<Human>();
List<Cheese> cheeses = new List<Cheese>();
In these examples, the generic types are Human and Cheese.
One list contains humans, the other contains cheeses.
I hope that helps to explain it because I don't know much of generic types myself.