我在使用使用caliburn micro框架的小型32位应用程序时遇到了奇怪的问题。当我在我的新计算机上成功编译它(win 7 pro 64bit,vs 2010 pro)时,它会工作,直到我想使用ActivateItem更改视图。然后没有错误发生,但视图没有改变。当我在旧电脑上编译时(win 7 ent 32bit,vs 2010 pro)它可以工作。
我知道这不是一个非常明确的“问题”,但我想检查一下是否有人有类似的问题我真的无法更恰当地描述它。
答案 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视图模型,但在其他地方编译时返回了意外的模型。