0

我对使用 caliburn 微框架的小型 32 位应用程序有奇怪的问题。当我在我的新计算机(win 7 pro 64bit,vs 2010 pro)上(成功)编译它时,它可以工作,直到我想使用 ActivateItem 更改视图。然后没有任何问题发生,但视图没有改变。当我在旧电脑(win 7 ent 32bit,vs 2010 pro)上编译它时,它可以工作。

我知道这不是很清楚的“问题”,但我想检查是否有人有类似的问题,我真的无法更恰当地描述它。

4

1 回答 1

0

我在我的代码中发现了重大缺陷。

我为我的一个应用内视图模型提供了 [Export(typeof(IShell))] 属性,而它应该只为 shell 视图模型声明。然后在为 IShell 调用 GetInstance 时引起了问题。

protected override object GetInstance(Type serviceType, string key)
    {
        string contract = string.IsNullOrEmpty(key) ? AttributedModelServices.GetContractName(serviceType) : key;
        var exports = container.GetExportedValues<object>(contract);

        if (exports.Count() > 0)
            return exports.First();

        throw new Exception(string.Format("Could not locate any instances of contract {0}.", contract));
    }

它在旧电脑上编译时返回了预期的 Shell 视图模型,但在其他地方编译时返回了意外的。

于 2013-02-21T15:14:52.093 回答