Как искать использование типов в конкретной сборке в C # - PullRequest
1 голос
/ 30 марта 2019

Например, если сборка ссылается на библиотеку, которая включает много типов, как я могу использовать отражение, чтобы определить, использует ли сборка определенный тип в указанной библиотеке.

Если в библиотеке DLL моей библиотеки

public class LibraryClass1

public class LibraryClass2

но сборка, ссылающаяся на DLL, использует только LibraryClass1 (например, новый LibraryClass1()), а не LibraryClass2, как я могу это определить?

1 Ответ

0 голосов
/ 30 марта 2019

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

Примерно так

var assembly = Assembly.GetExecutingAssembly().GetReferencedAssemblies().Select(Assembly.Load);
    var definedTypes = assembly.SelectMany(a => a.DefinedTypes);
    var types = definedTypes.ToList().Select(dt => dt.AsType());

    var toRet = types.Any(t => t.IsClass && t.IsInstanceOfType(typeof(LibraryClass1)));

Надеюсь, это поможет

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