有没有办法让它使用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
}
在这种情况下看起来没有注射。
我错过了什么或做错了什么?
答案 0 :(得分:2)
您必须让CompositionContainer
为您创建一个对象才能满足其导入。将ExportAttribute
添加到IoCConstructorMef
,创建容器,然后致电container.GetExportedValue<IoCConstructorMef>()
。
答案 1 :(得分:0)
你必须让MEF构建你的IoCConstructorMef cm。否则导入不会发生。