.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);