Можно ли узнать типы, которые были получены из 1 типа - PullRequest
0 голосов
/ 04 апреля 2019

Итак, у меня есть тип Type, и мне нужно выяснить, есть ли типы, которые являются производными от моего типа, и какие типы являются производными от моего типа, и я не могу просто проверить все сборки.Теперь тип, который я получаю, является динамическим, и я получаю много таких, так что я не могу просто проверять сборки каждый раз, как это.Я бы использовал его, но заранее мне нужно знать, являются ли другие классы производными от моего типа.Подобная статья, но он знал, что у него есть тип, из которого происходят другие классы.

List<Type> list = new List<Type>();
foreach (Type type in Assembly.GetAssembly(myType).GetTypes().Where(i => 
      i.IsClass && !i.IsAbstract && i.IsSubclassOf(myType)))
           {
               list.Add(type);
           }

1 Ответ

0 голосов
/ 04 апреля 2019

Итак, я думаю, у вас есть объект этого типа.

Type type = object.GetType()

дает вам тип, который вы ищете.А с

var assembies = AppDomain.CurrentDomain.GetAssemblies();

у вас есть все загруженные сборки.Теперь вы можете получить все эти типы, полученные из type с помощью

var derivedTypes = AppDomain.CurrentDomain.GetAssemblies().SelectMany(asm => asm.GetTypes().Where(t => t.IsSubclassOf(type)));

Пока вы не загрузите новые сборки, этот список не изменится.Поэтому не нужно проверять снова и снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...