Caliburn Micro - ActvateItem在新的dev pc上编译时停止工作

时间:2013-02-12 10:19:04

标签: c# wpf caliburn.micro

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

我知道这不是一个非常明确的“问题”,但我想检查一下是否有人有类似的问题我真的无法更恰当地描述它。

1 个答案:

答案 0 :(得分: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));
    }

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