Question: I have three class as following:

```
public class TestEntity { }

public class BaseClass<TEntity> { }

public class DerivedClass : BaseClass<TestEntity> { }

```

I already get the `System.Type` object of `DerivedClass` using reflection in runtime. How can I get the `System.Type` object of `TestEntity` using reflection?

Thanks.

Answer: 
I assume that your code is just a sample and you don't explicitly know `DerivedClass`.

```
var type = GetSomeType();
var innerType = type.BaseType.GetGenericArguments()[0];

```

Note that this code can fail very easily at run time you should verify if type you handle is what you expect it to be:

```
if(type.BaseType.IsGenericType 
     && type.BaseType.GetGenericTypeDefinition() == typeof(BaseClass<>))

```

Also there can be deeper inheritance tree so some loop with above condition would be required.
It think this should work:

```
var firstGenericArgumentType = typeof(DerivedClass).BaseType.GetGenericArguments().FirstOrDefault();

```

Or

```
var someObject = new DerivedClass();
var firstGenericArgumentType = someObject.GetType().BaseType.GetGenericArguments().FirstOrDefault();

```