【发布时间】:2013-04-16 10:33:55
【问题描述】:
我发现导入属性所需的 lambda 表达式有些令人困惑,我还试图了解如何使用 MEF 约定进行导入和导出,所以也许我一次尝试承担太多。
我正在导出 ResourceDictionary 并使用我之前导入的合同名称,如下所示:
[ImportMany("ApplicationResources", typeof(ResourceDictionary))]
public IEnumerable<ResourceDictionary> Views { get; set; }
效果很好,很好,但是我现在尝试通过RegistrationBuilder 导入它,但不完全了解如何执行此操作。
我相信这会导出它们(但我必须说实话我并不完全理解语法):
var registration = new RegistrationBuilder();
registration.ForTypesDerivedFrom<ResourceDictionary>()
.Export<ResourceDictionary>(x => x.AsContractName("ApplicationResources"));
我的App 中有一个我希望填充的属性
所以尝试了这个(在应用程序本身内执行)
registration.ForType<App>()
.ImportProperty<ResourceDictionary>(x => x.Views);
但这不起作用,我猜我需要以某种方式设置合同名称?谁能告诉我这个的语法是什么?也许如果我能看到正确的语法,我就能更好地理解它是如何工作的......我希望!
【问题讨论】: