C # MEF Set Свойство / Внедрение свойства - PullRequest
1 голос
/ 03 ноября 2010

Есть ли способ заставить его работать, используя Microsoft Extensibility Framework (MEF)

Допустим, у меня есть интерфейс

public interface IApplicationSettings
{
   string SettingOne { get; }
}

Класс, реализующий этот интерфейс

[Export(typeof(IApplicationSettings))]
public class ApplicationSettings : IApplicationSettings
{ 
   public string SettingOne
   {
       get
       {
           return "AAA";
       }        
    }
}

Класс, который связывается с моим интерфейсом как свойство

public class IoCConstructorMef
{
    [Import("ApplicationSettings", typeof(IApplicationSettings))]
    public IApplicationSettings ApplicationSettings { get; set; }
}

тогда я ожидаю, что моя собственность будет введена здесь:

 static void Main(string[] args)
 {
     IoCConstructorMef cm = new IoCConstructorMef();
     //cm.ApplicationSettings - is null

 }

Похоже, что в этом случае не происходит инъекций.

Я что-то пропустил или сделал что-то не так?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Вы должны позволить CompositionContainer создать объект для вас, чтобы его импорт был удовлетворен. Добавьте ExportAttribute к IoCConstructorMef, создайте контейнер и вызовите container.GetExportedValue<IoCConstructorMef>().

0 голосов
/ 23 февраля 2011

вы должны позволить MEF создать ваш IoCConstructorMef cm.в противном случае импорт не произойдет.

...