Lab work 4.

This commit is contained in:
ElEgEv 2023-11-08 12:01:13 +04:00
parent 85be301862
commit 9517896ece

View File

@ -70,13 +70,23 @@ namespace PluginsConventionLibraryNet60
{
try
{
// Загружаем сборку с заданным именем файла сборки
Assembly assembly = Assembly.LoadFrom(dllFile);
// Массив, содержащий все типы, которые определены в этой сборке
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
// "Если бы у меня была переменная этого типа, мог бы я присвоить ей значение этого типа?"
// И что это не итерфейс, НЕ ИНТЕРФЕЙС
if (typeof(IPluginsConvention).IsAssignableFrom(type) && !type.IsInterface)
{
// CreateInstance - Создает экземпляр указанного типа, используя конструктор,
// который наиболее полно соответствует указанным параметрам
// и проверка совместимости результата выражения с указанным типом
// или же: создаём объект и преобразуем его к IPluginsConvention
if (Activator.CreateInstance(type) is IPluginsConvention plugin)
{
plugins.Add(plugin);