После настройки моей инъекции зависимости я получаю ошибки MEF с несоответствием мощности. Я считаю, что правильно экспортирую с интерфейсов, и когда я проверяю программу, фактический каталог пуст. Не уверен, что я делаю неправильно!Попытка сделать инъекцию зависимостей с MEF и получить ошибки
Контейнер Состав
private static CompositionContainer CreateContainer()
{
AggregateCatalog catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(IClient).Assembly));
CompositionContainer container = new CompositionContainer(catalog);
return container;
}
Создать контейнер
static void Main(string[] args)
{
CompositionContainer container = CreateContainer();
IClient contactList = container.GetExportedValue<IClient>();
// More code below, but error is happening on the above line
}
Client Import
namespace MyWcfProgram.WcfProgram
{
[Export(typeof(IClient))]
public class Client : IClient
{
private readonly ILogic contactLogic;
[ImportingConstructor]
public Client([Import] ILogic contactLogic)
{
if(contactLogic == null)
{
throw new Exception();
} else
{
this.contactLogic = contactLogic;
}
}
// MORE BELOW LEFT OUT
}
Logic Import
namespace MyWcfProgram.Logic
{
[Export(typeof(ILogic))]
public class Logic : ILogic
{
private readonly IData dataAccess;
[ImportingConstructor]
public Logic([Import] IData dataAccess)
{
if (dataAccess == null)
{
throw new Exception();
}
this.dataAccess = dataAccess;
}
Data.cs
namespace MyWcfProgram.Data
{
[Export(typeof(IData))]
public class Data : IData
{
private string connectionString = "CONNECTION STRING IS HERE";
private System.Data.SqlClient.SqlConnection myconnection = new System.Data.SqlClient.SqlConnection();
// More code below, but no constructor since there are no dependencies
}
ли 'ImportingConstructor' нужно иметь' Import' атрибут для параметра конструктора? – Fabio
Да, обновлено, чтобы включить в себя также логику. DataAccess не импортирует никаких зависимостей. –
Добавлены данные в любом случае на всякий случай, если есть проблема с ним. –