2016-09-22 11 views
1

上だけのVisual Studioデバッガでnullです。 私はどこかでブレークポイントを作って、ビジュアルスタジオの直接入力フィールドに.Id(正しいものは何もない)を書いてください。キャストは、私は本当に奇妙な問題を抱えているいくつかのコンピュータ

私はbin/debugフォルダからexeを実行すると、動作します...キャストは完了し、aActionはnullではありません。

ここで何が間違っていますか?

+4

デバッガを使用している場合は、基礎となるタイプが実際に – Jonesopolis

+1

であることがわかります。複数のスレッドを使用していますか?これは、通常、デバッグの違いのような違いがあるためです。とにかく、 'LoadObject'が何をしているのか分からずに、私ができることはあまりありません - ロードされた後にaObjectに値がありますか? – gilmishal

+1

GetType()。FullNameとは何ですか?あなたのアクションは、返されたオブジェクトとは異なるものですか?デバッガの式評価エンジンには、VS2015で変更されたバグがあります。これには他のバグがあります。デバッガに表示される値を100%信頼するべきではありません。 –

答えて

-1

これは、オブジェクトが実行時にその値によって何らかの型にキャストされているために発生しますが、その後でもaObjectには型オブジェクトがあり、必要な型にキャストする必要があるため、(Action)aObjectを使用して例外キャストが不可能な場合。

Object c = "String"; 
Console.WriteLine(c.GetType().Name); // String 
c=new Exception(); 
Console.WriteLine(c.GetType().Name); // Exception 
+0

名前空間に問題はありません。これをテストするために、型の前に完全な名前空間を使用しました。オブジェクトは確かに私がキャストしたいタイプです。 exeを起動するとコードが実行されます。キャストはデバッグでのみ機能しません。 ActionとしてAction aAction = aObjectを使用すると、 aActionはnullです。 Action aAction =(Action)aObjectを使用すると、キャストは例外を返します。 もう一度:exeを起動するとコードが機能し、ブレークポイントを設定するとVisual Studioのダイレクトコンソールでキャストが機能します。デバッグ中のコードでのみnullです。 1台のマシンでのみ! VS2013とVS2015で同じ問題がテストされました。 –

1

私は手足に出て行って、あなたのActionが異なる名前空間にあることを言うつもりです。

たとえば、はMyApp.Actionを返します。aObject as Actionは、System.Actionとしてキャストしようとしています。

もしそうなら、最も簡単な修正はaObject as MyApp.Actionです。 System名前空間のものとの競合を避けるために、最初にクラスActionの名前を付けないでください。

0

名前空間の問題はありません。これをテストするために、型の前に完全な名前空間を使用しました。

オブジェクトは確かに私がキャストしたいタイプです。 exeを起動するとコードが実行されます。キャストはデバッグでのみ機能しません。

私が使用している場合 アクションaAction = aObject as Action; aActionがnullです。 アクションaAction =(Action)aObject;使用している場合は キャストは例外を返します。

再度: 私はexeを起動するとコードが機能し、ブレークポイントを設定するとVisual Studioのダイレクトコンソールで動作します。デバッグ中のコードでのみnullです。

1台のマシンでのみ! VS2013とVS2015で同じ問題がテストされました。