私はのIoCと依存性注入の初心者です。私はそれについて読んでいるが、私はそれを得ることができない。 スタッフの仕組みを理解しているうちに、私は自分のプロジェクトにこれらのパターンのいくつかを実装しようとしています(そして試行錯誤で学ぶかもしれません)。実装FluentSecurity(別名NinjectへのStructureMapを移植)
私は(ところで、NuGetから)FluentSecurityパッケージを使用してセキュリティ制御を実装しています。 this wikiに記載されているように、ポリシー違反ハンドラを実装する必要があります。問題は、(それは初心者のためのより簡単なように見えた)Ninject 2.2例はのStructureMapのIoCコンテナのために書かれている、と私は使用して(またはしようとしている)だということです。そのコードで
、彼らは(a)のお勧め:その後、
configuration.ResolveServicesUsing(type => ObjectFactory.GetAllInstances(type).Cast<object>());
と(B):
public class WebRegistry : Registry
{
public WebRegistry()
{
Scan(scan =>
{
scan.TheCallingAssembly();
scan.AddAllTypesOf<IPolicyViolationHandler>();
});
}
}
私の懸念:
- 私はそのコードを知っている(A)
Global.asax
に含まれます。しかし、ObjectFactory.GetAllInstances()
のNinjectの代替品は何ですか? WebRegistry
、Scan
、および内部関数TheCallingAssembly
およびAddAllTypesOf
のどの部分にこのコードを挿入するべきか、また同等のものは何もわかりません。
私は、これは少し広範囲に質問ですけど、私は任意の助けに感謝!前もって感謝します。
NinjectModuleの部分は正常です。しかし、私はまだ "ResolveServicesUsing"でいくつかの問題があります。ここでの主な難しさは、もともと、ObjectFactory(SMから)が静的クラス(またはそのメソッドだけが静的なもの)ですが、Global.asaxの中には「カーネル」が何であるかわかりません。 – tyron
ああ、修正するのは簡単ですが、どのようにNinjectをブートストラップしているかによって異なります。 「WebActivator」メソッドまたは「Inherit NinjectAppliction」メソッドを使用していますか?ヒント:App_Start/NinjectMVC3.csを持っている場合は、Webアクティベータメソッドを使用しています。 – Brook
ウェブアクティベータメソッドを使用している場合、カーネルのインスタンスを取得する簡単な方法は、プロパティインジェクション '[Inject]を使用することです。 パブリックIKernelカーネル{get;セット; } 'あなたのMvcApplicationで – Brook