.NET 4.x Невозможно создать экземпляр интерфейса - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. В общем делал "как по учебнику", но не работает и не могу понять почему( Итак, есть три проекта: 1 проект - содержит всего один файл с описанием интерфейса:
namespace mpPInterface
{
    public interface IPluginInterface
    {
        string Name { get; }
        string Description { get; }
        string Author { get; }
        string Version { get; }
        string AvailCad { get; }
    }
}
2 проект - это плагин, который должен подключаться к основной программе:
using System.Reflection;
using mpPInterface;
 
namespace mpTxtCenter
{
    public class Interface : IPluginInterface
    {
        private const string _Name = "mpTxtCenter";
        private const string _Description = "";
        private string _Version;
        private const string _Author = "Modis";
        private const string _AvailCad = "2010";
        public string Name { get { return _Name; } }
        public string Description { get { return _Description; } }
        public string Version { get { return _Version; } set
        {
            _Version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
        } }
 
        public string Author { get { return _Author; } }
        public string AvailCad { get { return _AvailCad; } }
    }
}
3 проект - программа, которая должна всего лишь ОТОБРАЗИТЬ сведения о плагине:
foreach (var fileName in Directory.GetFiles(
                            Path.Combine(CurDir,"Functions"),
                            "*.dll",
                            SearchOption.AllDirectories))
                        {
                            var localFuncAssembly = Assembly.LoadFrom(fileName);
                            var a = GetLoadableTypes(localFuncAssembly);
                            foreach (Type bType in a)
                            {
                                var c = bType.GetInterface(typeof(IPluginInterface).Name);
                                if (c != null)
                                {
                                    var plugin = Activator.CreateInstance(c) as IPluginInterface;
                                    if (plugin != null)
                                    {
                                        var ff = plugin.Version;
                                        Console.WriteLine(plugin.Version);
                                    }
                                }
                            }
                        }
public static IEnumerable<Type> GetLoadableTypes(Assembly assembly)
        {
            if (assembly == null) throw new ArgumentNullException("assembly");
            try
            {
                return assembly.GetTypes();
            }
            catch (ReflectionTypeLoadException e)
            {
                return e.Types.Where(t => t != null);
            }
        }
На строчке var plugin = Activator.CreateInstance(c) as IPluginInterface; ловлю ошибку

Невозможно создать экземпляр интерфейса

По всему интернету только вот такой пример и приводится и у всех работает!

Решение задачи: «.NET 4.x Невозможно создать экземпляр интерфейса»

textual
Листинг программы
var ff = plugin.Version;
Console.WriteLine(plugin.Version);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы