出于沮丧和超过3天的时间来搜索这个问题......我别无选择,只能用我的问题打扰你们。
我正在创建一个Silverlight应用程序。我正在使用MEF。当我尝试运行我的应用程序时,我收到以下错误。
构造函数的调用 类型 'IFG.Silverlight.Client.Views.MenuView' 与指定的绑定匹配 约束引发了异常。 [线: 25位置:47]
及其内部例外情况如下......
构图保持不变。该 变更被拒绝了因为 以下错误:组成 产生了单一的构图错误。 根本原因如下。 查看CompositionException.Errors 财产更详细 信息。
1)没有找到有效的出口 匹配约束 '((exportDefinition.ContractName == “MenuViewModel”)AndAlso (exportDefinition.Metadata.ContainsKey( “ExportTypeIdentity”) 并且 “IFG.Silverlight.Client.ViewModel.MenuViewModel” .Equals(exportDefinition.Metadata.get_Item( “ExportTypeIdentity”))))”, 可能是无效的出口 拒绝。
导致:无法设置导入 “IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName =“MenuViewModel”)'on 部分 'IFG.Silverlight.Client.Views.MenuView'。 元件: IFG.Silverlight.Client.Views.MenuView.ViewModel (ContractName =“MenuViewModel”) - > IFG.Silverlight.Client.Views.MenuView
确定。我的代码非常简单,因为它是一个测试应用程序。
我有一个接口IRetailModel
namespace IFG.Silverlight.Client.Common
{
public interface IRetailModel
{ ............
然后我有一个实现此接口的类
namespace IFG.Silverlight.Client.Model
{
[Export(typeof(IRetailModel))]
public class RetailModel : IRetailModel
{ .................
然后我将ViewModel用于View
namespace IFG.Silverlight.Client.ViewModel
{
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(ViewModelTypes.MenuViewModel)]
public class MenuViewModel : IFGViewModelBase
{
IRetailModel _model;
[ImportingConstructor]
public MenuViewModel(IRetailModel model)
{
好吧,我发现有一个名为MefX的神奇工具,它应该深入调试你的代码并告诉你发生了什么......我还没有能够让它工作。
的说明进行操作当我尝试运行时说
错误:无法加载一个或多个 请求的类型。检索 LoaderExceptions属性更多 信息。
然后回到谷歌,我发现这个Visual MefX(这是相同的但有GUI),我可以加载.xap但基本上它给了我与Visual Studio相同的信息。我找不到这个傻瓜[BECAUSE] ......
对于这种情况,我非常,非常和非常沮丧。任何人都可以向我解释我在哪里没有让MefX完成它的工作?我知道MEF似乎是处理这些隔夜框架(缺乏文件,车辆等等)的风险,但是Prism对我来说不是一个选择(当我可以使用我的时候,我想购买M16来杀死苍蝇)手指)。
谢谢
答案 0 :(得分:2)
为了将来参考,此博客文章附带了Visual Mefx的更新版本:How to Debug and Diagnose MEF Failures。它也是MEFContrib的一部分,虽然我不确定MEFContrib版本是否具有博客文章中版本的所有更改。