我对使用 caliburn 微框架的小型 32 位应用程序有奇怪的问题。当我在我的新计算机(win 7 pro 64bit,vs 2010 pro)上(成功)编译它时,它可以工作,直到我想使用 ActivateItem 更改视图。然后没有任何问题发生,但视图没有改变。当我在旧电脑(win 7 ent 32bit,vs 2010 pro)上编译它时,它可以工作。
我知道这不是很清楚的“问题”,但我想检查是否有人有类似的问题,我真的无法更恰当地描述它。
我对使用 caliburn 微框架的小型 32 位应用程序有奇怪的问题。当我在我的新计算机(win 7 pro 64bit,vs 2010 pro)上(成功)编译它时,它可以工作,直到我想使用 ActivateItem 更改视图。然后没有任何问题发生,但视图没有改变。当我在旧电脑(win 7 ent 32bit,vs 2010 pro)上编译它时,它可以工作。
我知道这不是很清楚的“问题”,但我想检查是否有人有类似的问题,我真的无法更恰当地描述它。
我在我的代码中发现了重大缺陷。
我为我的一个应用内视图模型提供了 [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 视图模型,但在其他地方编译时返回了意外的。