Lab work 4.
This commit is contained in:
parent
85be301862
commit
9517896ece
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user