C# После загрузки dll библиотеки через метод выдает ошибку при попытке вызова ее методов

C# После загрузки dll библиотеки через метод выдает ошибку при попытке вызова ее методов: Ссылка на объект не указывает на экземпляр объекта
Есть следующий метод для загрузки dll плагинов:

public List<IBookFormatPlugin> LoadPlugins(string pluginsDirectory)
{
    List<IBookFormatPlugin> plugins = new List<IBookFormatPlugin>();

    // Получение всех файлов .dll из папки pluginsDirectory
    string[] dllFiles = Directory.GetFiles(pluginsDirectory, "*.dll");

    foreach (string dllFile in dllFiles)
    {
        try
        {
            // Загрузка сборки
            Assembly pluginAssembly = Assembly.LoadFrom(dllFile);
            string pluginName = pluginAssembly.GetName().Name;
            Console.WriteLine($"Имя сборки DLL: {pluginName}");

            // Получение версии сборки
            Version version = pluginAssembly.GetName().Version;
            Console.WriteLine($"Версия: {version}");
            object[] titleAttributes = pluginAssembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
            if (titleAttributes.Length > 0)
            {
                AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)titleAttributes[0];
                Console.WriteLine($"Название: {titleAttribute.Title}");
            }

            object[] descriptionAttributes = pluginAssembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
            if (descriptionAttributes.Length > 0)
            {
                AssemblyDescriptionAttribute descriptionAttribute = (AssemblyDescriptionAttribute)descriptionAttributes[0];
                Console.WriteLine($"Описание: {descriptionAttribute.Description}");
            }
            string iMyInterfaceName = typeof(IBookFormatPlugin).ToString().Substring(6);
            Type[] defaultConstructorParametersTypes = Array.Empty<Type>();
            object[] defaultConstructorParameters = Array.Empty<object>();

            foreach (Type type in pluginAssembly.GetTypes())
            {
                string ns = type.Namespace;
                if (type.GetInterface(ns + iMyInterfaceName) != null)
                {
                    Console.WriteLine(type.Name);
                    ConstructorInfo defaultConstructor = type.GetConstructor(defaultConstructorParametersTypes);
                    object instance = defaultConstructor.Invoke(defaultConstructorParameters);
                    plugins.Add(instance as IBookFormatPlugin);
                }
            }

        }
        catch (Exception ex)
        {
            // Обработка ошибок загрузки плагина
            Console.WriteLine($"Ошибка загрузки плагина из файла {dllFile}: {ex.Message}");
        }
    }

    return plugins;
}

При добавлении элемента в список выходит нулевое значение: введите сюда описание изображения

Потом я вызываю метод:

public static string OpenBookFilter(List<IBookFormatPlugin> plugins)
{
    StringBuilder sb = new StringBuilder();
    string booksFormat = "Книги формата FB2 | *.fb2";
    sb.Append(booksFormat);
    foreach (IBookFormatPlugin plugin in plugins)
    {
        if (!string.IsNullOrEmpty(plugin.FilterFormat()))
        {
            sb.Append("|" + plugin.FilterFormat());
        }
    }
    sb.Append("|Все файлы (*.*)|*.*");
    return sb.ToString();
}

И выпадает ошибка: "Ссылка на объект не указывает на экземпляр объекта"

введите сюда описание изображения

Подскажите в чем ошибка? Лучше по другому обрабатывать библиотеки?


UPD: Вот код моей библиотеки:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using VersOne.Epub;

namespace epubPlugin
{
    public class epubReader : IBookFormatPlugin
    {
        public bool CanReadFormat(string filePath)
        {
            if (Path.GetExtension(filePath).ToLower() == ".epub")
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public string FilterFormat()
        {
            return "Книги формата EPUB | *.epub";
        }

        public Book InfoBook(string filePath)
        {
            EpubBook book = EpubReader.ReadBook(filePath);
            Book book1 = new Book();
            FileInfo fileInfo = new FileInfo(filePath);

            book1.Authors = book.AuthorList.Any() ? string.Join(", ", book.AuthorList) : "Неизвестный";

            if (!string.IsNullOrWhiteSpace(book.Title))
                book1.Title = book.Title;
            else
                book1.Title = Path.GetFileNameWithoutExtension(filePath).Trim();

            book1.Annotation = book.Description;
            book1.LocalPath = book.FilePath;
            book1.Size = Math.Round(fileInfo.Length / 1048576.0, 2);
            book1.Format = Path.GetExtension(filePath);
            book1.AddedDate = File.GetCreationTime(filePath);

            book1.Genre = string.Empty;
            book1.Year = string.Empty;
            book1.Language = string.Empty;
            book1.Sequence = (0,string.Empty);

            if (book.CoverImage != null)
            {
                byte[] imageBytes = book.CoverImage;
                File.WriteAllBytes(Path.GetDirectoryName(filePath) + "cover.jpg", imageBytes);
                book1.CoverImage = Path.GetDirectoryName(filePath) + "cover.jpg";
            }
            else
                book1.CoverImage = null;

            return book1;
        }

        public string ReadBook(string filePath)
        {
            throw new NotImplementedException();
        }
    }
}

Также код интерфейса:

namespace course
{
    public interface IBookFormatPlugin
    {
        bool CanReadFormat(string filePath);
        Book InfoBook(string filePath);
        string ReadBook(string filePath);
        string FilterFormat();
    }
}

Ссылка на проект на гитхабе: https://github.com/KRupos/course


Ответы (0 шт):