Question: Is there a better (more performant or nicer code ;) way to find all derived Types of a Type?
Currently im using something like:

1. get all types in used Assemblies
2. check my type with all those types if it is 'IsAssignable'

I was wondering if theres a better way todo this?

Answer: 
Asuming baseType contains a System.Type object that you want to check against and matchType contains a System.Type object with the type of your current iteration (through a foreach-loop or whatever):

If you want to check wheather matchType is derived from the class represented by baseType I'd use 

```
matchType.IsSubclassOf(baseType)

```

And if you want to check wheather matchType implements the interface represented by baseType I'd use

```
matchType.GetInterface(baseType.ToString(), false) != null

```

Of course I'd store baseType.ToString() as a global variable so I wouldn't need to call it all the time. And since you probably would need this in a context where you have a lot of types, you could also consider using the System.Threading.Tasks.Parallel.ForEach-Loop to iterate through all your types...
I ended up using the code that the top answer gave. Only thing is I wanted the code to be more readable so I wrote basically the same thing but like this instead:

```
var derived_types = new List<Type>();
foreach (var domain_assembly in AppDomain.CurrentDomain.GetAssemblies())
{
  var assembly_types = domain_assembly.GetTypes()
    .Where(type => type.IsSubclassOf(typeof(MyType)) && !type.IsAbstract);

  derived_types.AddRange(assembly_types);
}

```

In my case I used `type.IsSubClassOf(MyType)` because I only wanted derived types excluding the base class like mentioned above. I also needed the derived types not to be abstract (`!type.IsAbstract`) so I am also excluding derived abstract classes.