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: 
`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".
From the description of the class you provide:

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

```

It appears the person who created the class intends for an object (T) and an object property (TProperty) to be supplied whenever creating the class.

A best guess would be something like this:

```
var mine = new Myclass<Generic.List, String>();

```

It is hard to tell without any more code or the context of how the code is used, though.