none
【WPF】Application.Current.Propertiesでオブジェクトの値を保持時、「キャストできません」と表示される RRS feed

  • 質問

  • MVVMモデルのWPFプロジェクトにて、クラス「AppSettingInfo」の値をApplication.Current.Propertiesで保持し、アプリケーション内で共有することを検討しています。

    実装し、Visual Studioにてデバック実行した所、バインドしているViewModelでクラス「AppSettingInfo」を利用しているxamlにて、以下の様なエラーが発生してしまっております。

    「エラー 1 [A]Common.AppSettingInfo は [B]Common.AppSettingInfo にキャストできません。型 A は '(プロジェクト名), Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' (コンテキスト 'LoadNeither'、位置 'C:\Users\foo\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\4dms1smy.uap\ixml5ovq.4xw\Program.exe') から生成されます。型 B は '(プロジェクト名), Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' (コンテキスト 'LoadNeither'、位置 'C:\Users\foo\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\4dms1smy.uap\xe0grsgl.0sx\Program.exe') から生成されます。」

    「Program.exe」の配置しているフォルダが、『ixml5ovq.4xw』と『xe0grsgl.0sx』で異なっているようです。

    なお、上記のエラーは発生しておりますが、正常にビルド・実行は可能で、かつ上記のエラーは、一度デバック実行後に発生するようです。

    回避策をご存じの方はいらっしゃらないでしょうか。

    なお、AppSettingInfoのGetおよびSetは以下の通りです。

    public void SetAppSettingInfo()
            {
                System.Windows.Application.Current.Properties[Common.Define.PROPERTIES_KEY_APPSETTING] = Clone();
            }

    public static AppSettingInfo GetAppSettingInfo()
            {
                // プログラムにて保持している、設定ファイル情報を取得
                if (System.Windows.Application.Current.Properties[Common.Define.PROPERTIES_KEY_APPSETTING] != null)
                {
                    return (AppSettingInfo)System.Windows.Application.Current.Properties[Common.Define.PROPERTIES_KEY_APPSETTING];
                }

                // 設定値を保持していなければ、新規に習得
                AppSettingInfo appSetting = new AppSettingInfo();
                appSetting.SetAppSettingInfo();

                return appSetting;
            }

    ■発生環境

    ※OS : Windows 8.1 Pro 64bit

    ※Visual Studio : Visual Studio Ultimate 2012 Version 11.0.61030.00 Update 4


    2014年4月11日 0:47

すべての返信

  • 正常にビルド、実行できるのであれば、Visual Studioのバグっぽいですね(バグなのか対処できるところまで実装されていないのか・・・)。
    よってConnectに報告されると良いかもしれません。ただし、お使いの環境がわかりませんが、Visual Studioのバージョンによっては報告することができません。
    ご質問される際には、お使いの実行環境を書くと問題が絞りやすいのでお願いいたします。

    フィードバック センター
    https://connect.microsoft.com/VisualStudio/Feedback

    ちなみに、私も以前、同じように悩まされたことがありました。

    添付プロパティに配列を渡す際のVisual Studio 2010 WPFデザイナーのバグ?
    http://d.hatena.ne.jp/trapemiya/mobile?date=20100716&section=1279244773


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答の候補に設定 星 睦美 2014年4月16日 1:36
    2014年4月11日 5:30
    モデレータ
  • ご返信、ありがとうございます。

    トップにOS・VisualStudioについて追記しました。

    他に情報が必要であれば、ご返信いただければ幸いです。

    2014年4月11日 9:54
  • Visual Studioにてデバック実行した所、バインドしているViewModelでクラス「AppSettingInfo」を利用しているxamlにて、以下の様なエラーが発生してしまっております。

    「XAMLにて」 と記述されてますが、XAMLの方は問題ないでしょうか?AppSettingInfo の利用している部分を挙げて頂けば、何か手掛かりになるかも知れません。


    ひらぽん http://d.hatena.ne.jp/hilapon/

    2014年4月11日 14:37
    モデレータ