.NET 4.x Невозможно создать экземпляр интерфейса - C#
Формулировка задачи:
Всем привет. В общем делал "как по учебнику", но не работает и не могу понять почему(
Итак, есть три проекта:
1 проект - содержит всего один файл с описанием интерфейса:
2 проект - это плагин, который должен подключаться к основной программе:
3 проект - программа, которая должна всего лишь ОТОБРАЗИТЬ сведения о плагине:
На строчке var plugin = Activator.CreateInstance(c) as IPluginInterface; ловлю ошибку
namespace mpPInterface { public interface IPluginInterface { string Name { get; } string Description { get; } string Author { get; } string Version { get; } string AvailCad { get; } } }
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; } } } }
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); } }
Невозможно создать экземпляр интерфейса
По всему интернету только вот такой пример и приводится и у всех работает!Решение задачи: «.NET 4.x Невозможно создать экземпляр интерфейса»
textual
Листинг программы
var ff = plugin.Version; Console.WriteLine(plugin.Version);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д