誰かがNinjectでカスタムの「Inject」属性を作成する方法を教えてもらえますか?
私は次のことをしたいと思います:
- InjectView - カスタムの「注入」属性
この属性を持つプロパティが注入される場合、注入された値は「ViewManager」クラスからロードされます。
プロパティ/フィールドを注入するかどうかを決定するISelectorの例を見つけましたが、これにカスタムの「注入戦略」を追加する方法がわかりませんでした-実際の値の注入を自分のビューマネージャー。
誰かがNinjectでカスタムの「Inject」属性を作成する方法を教えてもらえますか?
私は次のことをしたいと思います:
この属性を持つプロパティが注入される場合、注入された値は「ViewManager」クラスからロードされます。
プロパティ/フィールドを注入するかどうかを決定するISelectorの例を見つけましたが、これにカスタムの「注入戦略」を追加する方法がわかりませんでした-実際の値の注入を自分のビューマネージャー。
これはすでにサポートされており、カーネルの簡単な構成で実行できます。
new StandardKernel(new NinjectSettings() { InjectAttribute = typeof(MyOwnInjectAttribute) };
カスタム属性による注入を可能にするカスタム IInjectionHeuristic を追加することで、これを解決しました。次に、解決されるタイプごとに追加のバインディングを追加するカスタム IBindingResolver も追加しました。このバインディングには、カスタム属性をチェックする条件があるため、以前のバインディングが壊れることはありません...
カスタム IBindingResolver によって作成されたバインディングは、ローカルの「ProviderCallback」を設定します。これは、抽出されたプロパティを利用し、要求を内部の ViewRegionManager インスタンスに渡します。
誰かが将来同様のことをしたい場合に、これが役立つことを願っています。