上だけのVisual Studioデバッガでnullです。 私はどこかでブレークポイントを作って、ビジュアルスタジオの直接入力フィールドに.Id(正しいものは何もない)を書いてください。キャストは、私は本当に奇妙な問題を抱えているいくつかのコンピュータ
私はbin/debugフォルダからexeを実行すると、動作します...キャストは完了し、aActionはnullではありません。
ここで何が間違っていますか?
上だけのVisual Studioデバッガでnullです。 私はどこかでブレークポイントを作って、ビジュアルスタジオの直接入力フィールドに.Id(正しいものは何もない)を書いてください。キャストは、私は本当に奇妙な問題を抱えているいくつかのコンピュータ
私はbin/debugフォルダからexeを実行すると、動作します...キャストは完了し、aActionはnullではありません。
ここで何が間違っていますか?
これは、オブジェクトが実行時にその値によって何らかの型にキャストされているために発生しますが、その後でもaObjectには型オブジェクトがあり、必要な型にキャストする必要があるため、(Action)aObjectを使用して例外キャストが不可能な場合。
Object c = "String";
Console.WriteLine(c.GetType().Name); // String
c=new Exception();
Console.WriteLine(c.GetType().Name); // Exception
名前空間に問題はありません。これをテストするために、型の前に完全な名前空間を使用しました。オブジェクトは確かに私がキャストしたいタイプです。 exeを起動するとコードが実行されます。キャストはデバッグでのみ機能しません。 ActionとしてAction aAction = aObjectを使用すると、 aActionはnullです。 Action aAction =(Action)aObjectを使用すると、キャストは例外を返します。 もう一度:exeを起動するとコードが機能し、ブレークポイントを設定するとVisual Studioのダイレクトコンソールでキャストが機能します。デバッグ中のコードでのみnullです。 1台のマシンでのみ! VS2013とVS2015で同じ問題がテストされました。 –
私は手足に出て行って、あなたのAction
が異なる名前空間にあることを言うつもりです。
たとえば、はMyApp.Action
を返します。aObject as Action
は、System.Action
としてキャストしようとしています。
もしそうなら、最も簡単な修正はaObject as MyApp.Action
です。 System
名前空間のものとの競合を避けるために、最初にクラスAction
の名前を付けないでください。
名前空間の問題はありません。これをテストするために、型の前に完全な名前空間を使用しました。
オブジェクトは確かに私がキャストしたいタイプです。 exeを起動するとコードが実行されます。キャストはデバッグでのみ機能しません。
私が使用している場合 アクションaAction = aObject as Action; aActionがnullです。 アクションaAction =(Action)aObject;使用している場合は キャストは例外を返します。
再度: 私はexeを起動するとコードが機能し、ブレークポイントを設定するとVisual Studioのダイレクトコンソールで動作します。デバッグ中のコードでのみnullです。
1台のマシンでのみ! VS2013とVS2015で同じ問題がテストされました。
デバッガを使用している場合は、基礎となるタイプが実際に – Jonesopolis
であることがわかります。複数のスレッドを使用していますか?これは、通常、デバッグの違いのような違いがあるためです。とにかく、 'LoadObject'が何をしているのか分からずに、私ができることはあまりありません - ロードされた後にaObjectに値がありますか? – gilmishal
GetType()。FullNameとは何ですか?あなたのアクションは、返されたオブジェクトとは異なるものですか?デバッガの式評価エンジンには、VS2015で変更されたバグがあります。これには他のバグがあります。デバッガに表示される値を100%信頼するべきではありません。 –