問題タブ [structuremap3]
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.
asp.net-mvc - ASP.NET MVC 承認フィルターの StructureMap でセッター インジェクションが機能しない
カスタムを使用してAuthorizeAttribute
、ユーザー認証のいくつかの側面を処理します。認証中に値を確認するには、データベースへのアクセスを追加する必要があります。このプロジェクトはリポジトリ パターンを使用し、リポジトリはすべて StructureMap を介してコントローラー コンストラクターでインスタンス化されます。
残念ながら、フィルターでコンストラクター注入を使用する方法はないようです。Jimmy Bogard ( http://lostechies.com/jimmybogard/2010/05/03/dependency-injection-in-asp-net-mvc-filters/ ) の記事で、プロパティ インジェクションを使用してこのシナリオを処理する方法を説明している記事を見つけました。基本的に、Jimmy のコードはGetFilters
メソッドをインターセプトし、各フィルターControllerActionInvoker
で実行BuildUp
してプロパティを設定します。これはまさに私が必要としていたものだったので、次のクラスを追加しました -
そして、これらの行でそれを StructureMap に配線します -
最後に、パブリック プロパティをカスタムAuthorizeAttribute
クラスに追加しました。
プロジェクトを実行して安全なページにアクセスすると、AuthorizeCore
コードが 2 回ヒットします。初めて、私のプロパティが設定され、適切に機能しています。ただし、プロパティが null であるため、2 番目の呼び出しは失敗します。メソッドにブレークポイントを設定しましたGetFilters
が、最初にヒットしただけです。残念ながら、StructureMap や Filters について、これがどこで横行しているのかを正確に把握できるほど十分に理解していません。
以下は、誰にとっても役立つ場合に備えて、コールスタックです-
コール #1
コール #2
StructureMap の達人で知恵を共有したい人はいますか? 助けてくれてありがとう!
編集:_Menu.cshtml
ファイルのコードは次のとおりです-
NightOwl888 からのいくつかのプロンプトのおかげで、問題を Kendo Menu コールに切り分けました。の最終行にブレークポイントを配置して_Menu.cshtml
ステップインすると、DoGetInstance が HomeController に対して呼び出されていることがわかります。それが完了するとすぐに、OnAuthorization が 2 度目に起動され、リポジトリ プロパティが null になります。
ここで何が欠けているか知っている人はいますか?
structuremap - 要求されたプラグイン タイプのデフォルト インスタンスまたは名前付きインスタンス 'Default' がありません
メイン プロジェクトで具象型ライブラリを参照しないようにしていますが、次のエラーが発生します。
次のように、アセンブリをスキャンするようにコンテナーをセットアップしました。
インスタンスを取得しようとすると、エラーが発生します。インスタンスを取得するためのコードは次のとおりです。
具象クラスをインターフェイスに明示的にマップすると、すべてがうまく機能しますが、それClient
は、私がやりたくないプロジェクトを参照する必要があることを意味します。
c# - Structuremap で自動登録と型スキャンを使用する方法
私のソリューションでは、このような 3 つのプロジェクトがあります。
Common.dll と Service.dll を d:\libs のようなフォルダーにコピーし、タイプ scan で以下のコードを使用します。
IPerson からインスタンスを取得するときに依存関係を初期化した後、このエラーが発生します
{"デフォルトのインスタンスが登録されておらず、タイプ 'Common.IPersonService' に対して自動的に決定できません\r\n\r\nCommon.IPersonService の構成が指定されていません\r\n\r\n1.) Container.GetInstance(Common .IPersonService)\r\n"}
asp.net-mvc - ASP.NET MVC5 で structuremap.MVC 5 を構成して、フレームワーク インターフェイス/クラス インスタンスを無視する方法
structuremap メソッド、scan.WithDefaultConventions(); structuremap.MVC 5 では、依存性注入の規則 IMyClassName 、 MyClassName を想定しています。自分で作成したクラスしかない場合は、これで問題ありません。
ASP.NET MVC 5 アプリケーションをそのまま使用すると、規則 IMyClassName 、 MyClassName はユーザー ID で終了しません。ASP.NET Framework インターフェイス/クラスを無視するように構造マップを構成するにはどうすればよいですか?
c# - StructureMap 3 の使用時にオブジェクトをコンストラクターに渡す
UserControl
C# プロジェクトにいくつかの s があり、次のコードを使用Structuremap 3
する s にアクセスしたいときに IoC コンテナーとして使用します。UserControl
これはUserControlFactory
コードです:
s コンストラクターのパラメーターinterface
としていくつかの s がある場合、正常に動作します。UserControl
UserControl
しかし今、コンストラクターを介してオブジェクトを渡したい:
どうやってやるの?
c# - Structuremap 3 複数の装飾
デコレーターのチェーンを使用して、StructureMap 3 で依存関係グラフを作成しようとしています。
各インスタンスには複数の引数を持つコンストラクターがありますが、内部の IGeocoder の引数は 1 つだけです。
私は次のようにそれらを接続しています:
しかし、私は得る
双方向の依存関係が検出されました! 以下の StructureMap スタックトレースを確認してください:
1.) SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder) のインスタンス
2.) 新しい RedisCachingGeocoder (デフォルトの IDatabase、デフォルトの IGeoCoder )
3.) SOAM.Services.Geocoding.RedisCachingGeocoder
4 .) SOAM.Services.IGeoCoder (SOAM.Services.Geocoding.RedisCachingGeocoder) のインスタンス
5.) new HomeController( IGeoCoder のデフォルト、 IAlertServiceのデフォルト)
6.) SOAM.Web.Controllers.HomeController
7.) SOAM.Web のインスタンス.Controllers.HomeController
8.) Container.GetInstance(SOAM.Web.Controllers.HomeController)
これを解決する方法はありますか?
structuremap - StructureMap 3 で HybridHttpOrThreadLocalScoped を呼び出す方法
Structuremap 2.6.4.1 から 3.1.4.143 に移行しようとしていますが、HybridHttpOrThreadLocalScoped の処理方法がわかりません。SO Q / AIが見つけることができるものはどれも私にはうまくいかないようです...
次のコードがあります。
それは私にこのエラーを与えます:
HybridHttpOrThreadLocalScoped を呼び出す新しい方法はありますか?
よろしくお願いします!
c# - StructureMap: 選択したコンストラクターに引数を渡す
私の StructureMap 構成は次のようになります。
FileStreamWrap
のインスタンスを取得して、2 つの引数を渡そうとしています。
しかし、このメッセージで例外が発生し、2 つの引数を持つコンストラクターを使用するように明示的に指示したのに、なぜ StructureMap がまだ最も多くの引数を持つコンストラクターを選択するのかわかりません ( FileStreamWrap(string path, System.IO.FileMode mode)
)
アドバイスをいただければ幸いです。