Question: What is **TProperty** in c#?

I saw a code like this:

```
public abstract class Myclass<T, TProperty> : .... 

```

I know that **T** is a generic type for the type we are passing. Is **TProperty** also the same as **T**.

Answer: 
Anything inside the `<>` is a generic type indicator. It's name does not make any difference to the compiler, but it should be meaningful for code readability.  

Just like in `Dictionary<TKey, TValue>`.  

Of course it has to be unique to it's scope, inclusive of variable names in that scope.  

Note that type indicators are not variables, but the Do collide with variable names (Thank you Aravol for your comment on that).
`TProperty` is a second generic parameter. 

* Like object parameters on methods, the names have to be unique to distinguish them
* Generics can have more than one parameter
	+ According to the C# language spec, *any* number - see [`Tuple<T1...T7, TRest>`](https://msdn.microsoft.com/en-us/library/dd383325(v=vs.110).aspx) for eaxmple.
* By convention, generic parameter names either are or start with a capital "T".