2016-08-29 15 views
0
IObjectVmFactory objectVMFactory = this.Container.Resolve<IObjectVmFactory>(); 

これはNullReferenceExceptionをスローします。割り当てによってSystem.NullReferenceExceptionが生成される

私は変数にthis.Container.Resolveの結果を割り当てない場合、それはスローされません。

this.Container.Resolve<IObjectVmFactory>().AnyMethod(...) 

これは私には意味がありません...誰かが私にいくつかの説明を与えることができますか?

追加情報:

this.Containerは確かにヌルではありません。トリプルチェック。そして、それがヌルであれば、2行目は失敗します。

IObjectVmFactoryを実装しているクラスには定義済みのコンストラクタがありませんので、例外はIObjectVmFactoryの実装内では起こりません。

例外には、内部例外および最初の行に直接向いた点はありません。

直接実行ウィンドウで行を直接実行すると、( '' is null)メッセージが生成されます。

ありがとうございます!

+2

最初は 'this.Container.Resolve ();'です。もう1つは 'this.Container.Resolve ()。CreateInstance(...)'です。コード自体は、最初のものが2番目のものである間にインスタンスを作成していないことを説明しています。したがって、それは自明です。 – ViVi

+0

'Container'が' null'ではないと確信していますか? 'NullReferenceException'はどこから来たのですか? – Haukinger

+0

最初はIObjectVmFactoryのインスタンスを作成しています。唯一の違いは、最初のケースでは、変数で1で解決されたインスタンスを割り当てます。コンテナはnullでもなくokです。 –

答えて

0

私のプロジェクトの設定は、リリースで、デバッグではありませんでした。リリースモードでは、割り当て時に例外がスローされます。デバッグでは、それが割り当てAFTERステップにスロー:

Foo member { get; } 
public Bar(Foo foo) 
{ 
    // crashes here on release 
    member = foo; 

    // crashes here in debug (foo.Collection was null) 
    foreach (var thing in foo.Collection) 
     thing.DoSomething(); 
} 

だから、リリースでは、プロジェクトの設定がエラーを引き起こす可能性があるように見えます。デバッグするために設定を切り替えて、失敗している場所を見つけてください。

ビルドしに行く - > [構成マネージャ

は、プロジェクト

変更デバッグまでリリースから設定を選択します。

エラーが同じ場所で発生するかどうかを確認してください。

関連する問題