我发现导入属性所需的 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);
但这不起作用,我猜我需要以某种方式设置合同名称?谁能告诉我这个的语法是什么?也许如果我能看到正确的语法,我就能更好地理解它是如何工作的......我希望!