問題タブ [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.

0 投票する
4 に答える
1237 参照

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 になります。

ここで何が欠けているか知っている人はいますか?

0 投票する
2 に答える
1069 参照

structuremap - 要求されたプラグイン タイプのデフォルト インスタンスまたは名前付きインスタンス 'Default' がありません

メイン プロジェクトで具象型ライブラリを参照しないようにしていますが、次のエラーが発生します。

次のように、アセンブリをスキャンするようにコンテナーをセットアップしました。

インスタンスを取得しようとすると、エラーが発生します。インスタンスを取得するためのコードは次のとおりです。

具象クラスをインターフェイスに明示的にマップすると、すべてがうまく機能しますが、それClientは、私がやりたくないプロジェクトを参照する必要があることを意味します。

0 投票する
3 に答える
2269 参照

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"}

0 投票する
2 に答える
1194 参照

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 インターフェイス/クラスを無視するように構造マップを構成するにはどうすればよいですか?

0 投票する
3 に答える
389 参照

c# - StructureMap 3 の使用時にオブジェクトをコンストラクターに渡す

UserControlC# プロジェクトにいくつかの s があり、次のコードを使用Structuremap 3する s にアクセスしたいときに IoC コンテナーとして使用します。UserControl

これはUserControlFactoryコードです:

s コンストラクターのパラメーターinterfaceとしていくつかの s がある場合、正常に動作します。UserControl

UserControlしかし今、コンストラクターを介してオブジェクトを渡したい:

どうやってやるの?

0 投票する
2 に答える
735 参照

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)

これを解決する方法はありますか?

0 投票する
1 に答える
946 参照

structuremap - StructureMap 3 で HybridHttpOrThreadLocalScoped を呼び出す方法

Structuremap 2.6.4.1 から 3.1.4.143 に移行しようとしていますが、HybridHttpOrThreadLocalScoped の処理方法がわかりません。SO Q / AIが見つけることができるものはどれも私にはうまくいかないようです...

次のコードがあります。

それは私にこのエラーを与えます:

HybridHttpOrThreadLocalScoped を呼び出す新しい方法はありますか?

よろしくお願いします!

0 投票する
0 に答える
1102 参照

c# - StructureMap: 選択したコンストラクターに引数を渡す

私の StructureMap 構成は次のようになります。

FileStreamWrapのインスタンスを取得して、2 つの引数を渡そうとしています。

しかし、このメッセージで例外が発生し、2 つの引数を持つコンストラクターを使用するように明示的に指示したのに、なぜ StructureMap がまだ最も多くの引数を持つコンストラクターを選択するのかわかりません ( FileStreamWrap(string path, System.IO.FileMode mode))

アドバイスをいただければ幸いです。