2011-07-11 8 views
0

私のアプリケーションでIoC/DIを実装するためにNinjectを使用しています。 1つのケースを除いてアプリケーション全体でうまく機能しています。ここでは、ユーザー定義クラス型のコンストラクタ引数を設定しています。Ninject getメソッドがnullへのコンストラクタ引数を設定しました

このクラスには4つのプロパティがあり、すべてがユーザー定義型の型であり、すべてがシリアル化された列挙型です。

私はカーネルの依存関係を解決すると、nullに設定されたコンストラクタ引数の値として例外がスローされます。私はなぜそれが分からない。

これは、seriazlizeable列挙型などのためですか?タイプを変更する方法はありませんので、タイプを変更する必要がない文脈で何かを提案してください。

編集

IManager manager = GlobalData.Kernel.Get<IManager> (new ConstructorArgument("context", Context)); 
// Context Class code is here 
public class Context { 
    public string ContextCode { get; set; } 
    public Module Module { get; set; } 
    public Screen Screen { get; set; } } 

モジュールと画面は、あなたのコンテキストコンストラクタの引数がNULLであるとして取得に渡されているためですSerializableを列挙

+1

コードサンプルを追加できますか? –

+0

IManager manager = GlobalData.Kernel.Get (新しいConstructorArgument( "context"、Context));コンテキストクラスコードはここにありますpublic class Context { public string ContextCode {get;セット; } publicモジュールモジュール{get;セット; } public Sc​​reen Screen {get;セット; } }モジュールとスクリーンはシリアライズ可能な列挙体です –

答えて

0

です。

+0

いいえ、Getメソッドに渡す前にチェックしました。nullではありません。問題は、ConstructorArgumentに渡された変数名です。クラス: public class a { 公開 } と私は を使用していますConstructorArgument( "ConsArg"、context); 問題は、あなたの入力 レモのコンストラクタの引数がケースである高感度に影響 おかげであなたは私ので、この静的な文字列の依存関係が解決された何かを示唆している場合、それは非常に参考になります。 –

+1

私が言うことができるのは、コンテキストのバインディングを指定することだけです。あなたのポストには、さらに多くの情報があります。 –

+0

私はちょうど静的な文字列をいくつかの変数の値に置き換えたいので、後で誰かがコンストラクタの変数の識別子を変更した場合、私のコードは損なわれません。 –

関連する問題