Silverlight 4.0 MEF错误消息

Silverlight 4.0 MEF错误消息,silverlight-4.0,mef,Silverlight 4.0,Mef,任何人都可以解释这个错误消息: 组成保持不变。这个 更改被拒绝,因为 以下错误:合成错误 产生了一个构图错误。 下面提供了根本原因。 查看CompositionException.Errors 属性以获取更多详细信息 信息 1) 未找到有效的导出 匹配约束 “((exportDefinition.ContractName== “Silverbits.ApplicationServices.ApplicationServicesManager”) 安达索 (exportDefinition.Met

任何人都可以解释这个错误消息:

组成保持不变。这个 更改被拒绝,因为 以下错误:合成错误 产生了一个构图错误。 下面提供了根本原因。 查看CompositionException.Errors 属性以获取更多详细信息 信息

1) 未找到有效的导出 匹配约束 “((exportDefinition.ContractName== “Silverbits.ApplicationServices.ApplicationServicesManager”) 安达索 (exportDefinition.Metadata.ContainsKey(“ExportTypeIdentity”) 安达索 “Silverbits.ApplicationServices.ApplicationServicesManager”.Equals(exportDefinition.Metadata.get_项(“ExportTypeIdentity”))”, 可能已删除无效的导出 拒绝

导致:无法设置导入 'Silverbits.Applications.SilverbitsApplication.ApplicationServices (ContractName=“Silverbits.ApplicationServices.ApplicationServicesManager”)' 在“Framework.App”部分。要素: Silverbits.Applications.SilverbitsApplication.ApplicationServices (ContractName=“Silverbits.ApplicationServices.ApplicationServicesManager”) -->Framwork.App


它在寻找这样的东西:

[Export]
public class ApplicationServicesManager
{
}
public class SomeClass
{
    [Export]
    public ApplicationServicesManager AppServices { get; private set; }
}
或者像这样:

[Export]
public class ApplicationServicesManager
{
}
public class SomeClass
{
    [Export]
    public ApplicationServicesManager AppServices { get; private set; }
}

但在您提供的导出范围内找不到。如果要从属性或字段导出它,请确保导出它的对象已与容器组合。如果是类导出,并且该类存在于另一个程序集中,请确保该程序集位于容器的目录中。

ApplicationServicesManager
类可能可用,并用
[export]
属性标记,这一部分可能仍然被拒绝,因为它本身有无法满足的进口


查看MEF文档中的部分。

我使用的是Silverlight 4.0,因此我没有处理目录,而是使用建议的方法:CompositionInitializer.SatisfyImports(this);顺便说一句,这仍然不能解决我的问题,因为我已经导出了ApplicationServicesManager。它是另一个程序集中的一个类,但它是否包含在xap文件中,因此它应该解析。SatisfyImports将使用隐式创建的全局容器和标准目录,但它应该设置为使用xap中的每个程序集来查找导出;我没有将MEF与Silverlight一起使用,所以我不能完全确定。在任何情况下,该错误都肯定是无法解决导出问题。当我的类将服务导出为属性时,我发现这个问题没有在我使用的容器中正确组合。