private static List<Type> GetSubTypes(Type baseType)
{
var assembly = baseType.Assembly;
var allTypes = assembly.GetTypes();
var subTypes = new List<Type>();
foreach (var type in allTypes)
{
if (baseType.IsAssignableFrom(type) &&
baseType != type)
subTypes.Add(type);
}
return subTypes;
}