【问题标题】:Fody.Costura Interfering with Caliburn.Micro Resolving of ViewsFody.Costura 干扰 Caliburn.Micro 视图解析
【发布时间】:2014-03-13 12:09:47
【问题描述】:

我有一个通过 Caliburn.Micro 注入视图的窗口;

<ContentControl cal:View.Model="{Binding ViewModelObject}"/>

现在,如果没有 Fody.Costura,我可以看到我的 ViewModel 是通过 IoC 容器请求的。不久之后(此时可以看到控件),CM 向 IoC 请求 View 类。

现在,当我使用 Fody.Costura 时,首先通过 IoC 请求和解析 ViewModel 类型,这意味着程序集已被解包和加载。但是,CM 从不要求 IoC 解析视图类型,而我的屏幕上只是显示“无法找到...的视图”消息。

因此,问题在于,虽然 View 和 ViewModel 类型可以通过 IoC 解决,但当我使用 Costura 时,Caliburn Micro 甚至选择不尝试获取 View。

我认为 Caliburn.Micro 已进行初步检查以查找类型,但当您使用 Fody.Costura 合并引用的程序集时该检查失败。

知道如何解决这个问题吗?

更新:

我将一个 ILog 调试器附加到 Caliburn 并使用 Costura 我收到以下警告:

警告:未找到视图。搜索到:Module.Recorder.Views.RecorderView、Module.Recorder.ViewModels.RecorderView。

但是,如前所述,我知道程序集在加载它以搜索 NInject 模块时已加载,并且我可以看到 Module.Recorder.Views.RecorderView 是注入绑定的。

【问题讨论】:

  • 您应该查看活页夹日志:fuslogvw 以检查未找到该类型的原因。这可能会给你一个线索。
  • 我添加了实现的 ILog,它只是说找不到它。显然,它正在查看程序集而不是找到它,而不是向 IoC 询问命名类型。

标签: c# ninject caliburn.micro fody-costura


【解决方案1】:

问题是我引用的程序集。我必须在SelectAssemblies()中手动加载它们

不幸的是,我使用的是accepted solution here,它从 exe 目录加载它们。

我对上述问题的解决方案是从当前加载的程序集中显式加载引用的程序集,as answered here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多