0

caliburn マイクロ フレームワークを使用している小さな 32 ビット アプリで奇妙な問題が発生しています。新しいコンピューター (win 7 pro 64bit、vs 2010 pro) で (正常に) コンパイルすると、ActivateItem を使用してビューを変更するまで機能します。その後、何も問題はありませんが、ビューは変更されません。これを古いPC(win 7 ent 32bit、vs 2010 pro)でコンパイルすると動作します。

これはあまり明確な「問題」ではないことはわかっていますが、誰かが同様の問題を抱えているかどうかを確認したかったので、それをより適切に説明することはできません.

4

1 に答える 1

0

コードに大きな欠陥が見つかりました。

アプリ内ビューモデルの1つに[Export(typeof(IShell))]属性を指定しましたが、シェルビューモデルに対してのみ宣言する必要がありました。その後、GetInstanceがIShellに対して呼び出されたときに問題が発生しました。

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でコンパイルすると期待されるシェルビューモデルが返されますが、他の場所でコンパイルすると予期しないモデルが返されます。

于 2013-02-21T15:14:52.093 に答える