Попробуйте что-то похожее на этот полный пример:
public class ClassA
{
public static void Main()
{
Assembly myassembly = Assembly.GetExecutingAssembly();
var baseType = typeof(ClassA);
var theTypesIWant = myassembly.GetTypes().Where(t=> baseType.IsAssignableFrom(t));
}
}
public class ClassB : ClassA
{ }
Конечно, вы можете получить ссылку на сборку различными способами. Может быть, это будет лучше:
var myAssembly2 = baseType.Assembly;
Дайте мне знать, если этого недостаточно.
Редактировать
Вы используете C # 2, поэтому Linq недоступен. Вот измененная форма:
List<Type> theTypesIWant2 = new List<Type>();
foreach (var t in myAssembly2.GetTypes())
{
if (baseType.IsAssignableFrom(t))
theTypesIWant2.Add(t);
}