問題タブ [ninject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - ninject はコンテナーと見なされますか?
私は誰かと話していて、IOC を学んでいて、ninject を使って感覚をつかんでいると言いました。
彼は、私が使用しているコンテナは何ですか?と尋ねました。私は彼にninjectを言った。
彼が何を指しているのかわからなかったが、より人気のあるキャッスル ウィンザー製品があることは知っている.
誰かが私のためにこれを片付けることができますか? ここで何が欠けていますか?
.net - 型のコンストラクターがわからない場合、どのようにしてNinjectプロバイダーを作成しますか?
私はFubuMVCと相互作用するためにコンテナアセンブリを想起させることを試みることにしました。すばらしいのは、FubuMVC.Container.StructureMapアセンブリが行うすべてのテストに合格することです。しかし、それをFubuSampleにドロップしたとき。アクティベーションエラーが発生しました。
エラーは、ビヘイビアーのプロバイダーで、ビヘイビアーインスタンスを構築するためにパラメーターなしのコンストラクターを呼び出しているだけだからです。それは実際の生活では受け入れられないように思われます。
設定方法は次のとおりです。
私のLoadメソッドには、次のバインディングが含まれています。
私のプロバイダーのCreateメソッドは次のとおりです。
だから私の質問は、コンストラクターがどのように見えるかわからないときに、サービスのインスタンスを作成するためにプロバイダーにどのように設定する必要があるかということです。むしろ、ConstructorInfoを使用してコンストラクターを確認した場合、Ninjectは適切な依存関係を注入しますか?
FubuMvcにはCommonServiceLocatorのサポートが必要なため、これはNinject2bを使用しています。
asp.net-mvc - NinjectMVCはMVC2プレビューで動作するはずですか?
MVC 2プレビューを実行していますが、Ninject2MVCを使用するのはこれが初めてです。
私が継続的に取得しているエラーは次のとおりです。タイプ'MyMVC.Controllers.EventsController'のコントローラーを作成しようとしたときにエラーが発生しました。コントローラにパラメータのないパブリックコンストラクタがあることを確認してください。
Global.csにあるのはこれです:
そして、これは私のコントローラーがどのように見えるかです。
entity-framework - Entity Framework で Ninject を使用する
「TestDB」と呼ばれる ObjectContext を受け取るリポジトリ クラスがあります。Web アプリケーションを起動すると、「指定されたメタデータ リソースを読み込めません」というメッセージが表示され、web.config ファイルから接続設定が取得されなくなったようです。
これが私のコードのスニペットです。
そこで何が起こっているのかを理解したら、DataContenxt に渡したいと思いますが、Ninject マッピングでこれがどのように見えるべきかについて頭を悩ませているようには見えません。
asp.net-mvc - Ninject 2+でインジェクションを行うにはどうすればよいですか(モジュールをどのように配置しますか?)
私は2つの関連する(この質問に)プロジェクトと他のいくつかのプロジェクトで解決策を持っています。
- 他のいくつかのプロジェクトで使用される機能を備えたクラスライブラリ。
- ASP.NETMVCアプリケーション。
私の質問は基本的に、Ninject2でIoCをどこで行うべきかということです...
- クラスライブラリには、特にWebリクエスト固有のセッションオブジェクトを必要とするリポジトリクラス内のDIの愛が必要です(作業ユニットを考えてください)。
- Ninject 2では基本的にNinjectHttpApplicationから継承するため、MVCアプリにはDIが必要です。
- クラスライブラリの単体テストでは、別のリポジトリセットを挿入するために、これを認識する必要があります。
- 同じ理由で、Webアプリの単体テストを挿入する必要があります。
そもそも3つの選択肢しか見られなかったので、私はここで自分自身を精神的なコーナーに塗りつぶしました。クラスライブラリのDI、WebアプリのDI、またはその両方ですが、それぞれに問題があります。
- そもそもMVCアプリはNinjectHttpApplicationから継承する必要があるため、クラスライブラリでのみDIを実行することはできません。
- 私はMVCアプリでのみDIを実行することはできません-結局のところ、クラスライブラリは他のライブラリによって使用されており、MVCアプリはとにかくライブラリの内部についてあまり知らないはずです。
- これが私が見ることができる唯一の方法だと思います:両方のプロジェクトの独立したIoC。クラスライブラリとMVCアプリには、それぞれ独自のIoCセットアップがあり、お互いを気にすることなく、自分たちのもののDIを実行します。
誰かがこのようなことをする方法に関するいくつかの「ベストプラクティス」またはガイドラインを持っていますか?私がこのような状況に陥った最初の人だとは想像できません。これを行うための「適切な」方法が何であるかを知っておくとよいでしょう...
ありがとう!
dependency-injection - クラス ライブラリでの Ninject による DI
グローバルをweb.configから派生させて使用することで、Web アプリケーションで Ninject を正常に使用していますNinjectHttpApplication
。NinjectHttpModule
私が今やりたいことは、私のクラス ライブラリの 1 つで DI を使用することですが、これを行う方法がわかりません。次のダミークラスがあります。
をインスタンス化Class1
して呼び出すGetCustomer()
と、CustomerRepository
が null になるため、明らかに何か間違ったことをしています。
また、コンストラクター注入を使用し、コンストラクターを次のようにすると、
どうすればインスタンス化できますClass1
か?
Ninject はまったく新しいので、これはすべて非常に簡単なことです。
.net - この mbunit テストは本当に何か重要なことをしていますか?
私もninjectを使用しています。戻り値を設定しているように見えますが、実際にテストされているのは何ですか?これは冗談ですか、それとも何か不足していますか?
c# - Ninject 2.0コンストラクタパラメータ - デフォルトコンストラクタも存在する場合の設定方法は?
私は IOC コンテナーを初めて使用し、Ninject を学習しています。Github から新たにダウンロードしたバージョン 2.0 を使用しています。
デフォルトのコンストラクターも存在する場合、コンストラクターに文字列パラメーターを設定しようとしています。私は Ninject のソースを調べてきましたが、不足しているものを簡単に特定するために使用されているパターンについて十分に理解していません。
これが私のテストコンソールアプリです:
このコードはコンソールに "間違ったメッセージ :(" を出力します。TestClass のデフォルト コンストラクターを削除すると、"Hello World!" が表示されます。何が欠けているのでしょうか?
明確にするために、クラスに「Hello World!」を出力させたいと考えています。デフォルトのコンストラクターが存在するコンソールに。
c# - ninject を使用してその場で実装を変更できますか?
ninject を使用すると、特定の実装にバインドできることがわかります。
ninject をバインドする具体的な実装をロードします。
データベース (Web アプリケーション) で使用する具体的な実装を保存し、管理パネルでそれを変更すると、その場で必要なクラスを使用する必要があるとします。
これは可能ですか?
ninject - global.asax で Ninject NLogModule Logger を使用する
asp.net アプリケーションで DI に Ninject を使用しているため、グローバル クラスは NinjectHttpApplication から継承します。
私の CreateKernel() では、カスタム モジュールを作成しており、DI は正常に機能しています。
しかし、NinjectHttpApplication クラスに Logger プロパティがあることに気がついたので、例外がキャッチされないときはいつでも Application_Error でこれを使用しようとしています。
Ninject 用に nlog モジュールを正しく作成していると思いますが、ロガーは常に null です。これが私のCreateKernelです:
ただし、次のメソッドでは、Logger は常に null です。
明確にするために、Logger は ILogger タイプの NinjectHttpApplication のプロパティであり、[Inject] 属性を持ちます
Loggerに正しく注入する方法はありますか?