問題タブ [structuremap]
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 - 構造マップInstanceScope.Hybridとasp.netmvcの誤動作
私は本当にここで立ち往生しています。
asp.net mvcアプリケーションがあり、StructureMap 2.5.3(SM)を使用してコントローラーにサービスクラスとリポジトリクラスを挿入しています。すべてのコントローラーはSM工場で製造されています。
ハイブリッドでキャッシュしたいLinqtoSQLデータコンテキストもあります。
キャッシングが機能していないようで、そのためにデータコンテキストに問題が発生します。
複数のブラウザリクエストはすべて同じdbcontextを返しますか?!私のリポジトリクラスの1つに、このコードを配置しました。Debug.WriteLine( "db hashcode:" + db.GetHashCode()+ "" + DateTime.Now.ToString());
ここで、db = the datacontextまた、dbを使用してリポジトリのハッシュコードを出力し、リポジトリを使用してサービスを出力します。これは、複数のリクエストの出力です。
サービスハッシュコード:6238792 26-3-2009 18:59:34
リポジトリハッシュコード:21756593 26-3-2009 18:59:34
dbハッシュコード:7043935 26-3-2009 18:59:34
サービスハッシュコード:59389065 26-3-2009 18:59:34
リポジトリハッシュコード:8331620 26-3-2009 18:59:34
dbハッシュコード:7043935 26-3-2009 18:59:34
サービスハッシュコード:11291358 26-3-2009 18:59:38
リポジトリハッシュコード:13848497 26-3-2009 18:59:38
dbハッシュコード:7043935 26-3-2009 18:59:38
サービスハッシュコード:42509361 26-3-2009 18:59:38
リポジトリハッシュコード:56101068 26-3-2009 18:59:38
dbハッシュコード:7043935 26-3-2009 18:59:38
ご覧のとおり、7043935はリクエストごとに毎回データコンテキストのハッシュコードですが、サービスとリポジトリは毎回新しいインスタンスとハッシュコードを取得します。
これが原因で奇妙なエラーが発生します。たとえば、データベースが別のソースによって変更されているときに、dbcontextが4つのwebrequests前の元の値を持っているためにデータ同時実行例外が発生します。
c# - 特定の場合にStructureMapを使用してコンストラクターに異なるオブジェクトを挿入します
IRepository <T>と、実装SqlRepository<T>があります。SqlRepositoryには、コンストラクターにDataContextパラメーターがあります。
SM構成は次のようになります。
しかし、IRepository <SpecificObject>の構築のために、異なるDataContextを挿入したいと思います。IReposiotry <SpecificObject>を要求するときに、FirstDataContextではなくSecondDataContext(DCが別のデータベースに移動する)ではなく、別のDataContextが必要であるとSMをどのように言いますか。
たとえば、IRepository <T>を要求する場合は、FirstDataContextを注入しますが、IRepository <Product>を明示的に要求する場合は、SecondDataContextを注入します。
また、そのSecondDCはSMによってハイブリッドキャッシュされる必要があります!
c# - Ninject (またはその他のコンテナー) を使用して、サービスを要求しているタイプを見つけるにはどうすればよいですか?
サービスのインターフェースがあるとします。
そして、ジェネリックであるそのサービスの具体的な実装:
そして、IFooService のインスタンスを必要とする他のクラスがあります。
Bar が作成されたときに FooService<Bar> のコンストラクター引数が渡されるように、IoC コンテナーを接続する必要があります。Bar と同じように、他にも多くのクラスがあります。また、それぞれに FooService<TRequestingClass> のインスタンスを渡す必要がある場合もあります。ここで、TRequestingClass は、IFooService のインスタンスを必要とするクラスの型です。この奇抜さを IFooService の消費者に公開する必要はありません。彼らが気にする必要があるのは、渡された IFooService のメソッドを呼び出すことができるということだけです。渡された IFooService の具体的な実装を構築するために特別なものが必要であることを知る必要はありません。
FooService<T> の代わりとして受け入れられるのは、作成対象のクラスの名前を含む文字列引数をコンストラクターに持つ非ジェネリック クラスです。すなわち:
このように IoC コンテナーを接続して依存関係を構築するにはどうすればよいですか?
なぜこのような奇妙な構造が必要なのか混乱している場合は、log4net.LogManager.GetLogger(typeof(SomeClass)) で作成された ILog を取得するときに log4net がどのように機能するかを検討してください。コードに log4net への参照を散らかしたくないので、単純な ILogger インターフェイスを作成し、次のように実装したいと思います。
structuremap - Unity & StructureMap
UnityでこれのStructureMapに相当するものはありますか:
この小さなパターンに従おうとしています...
asp.net-mvc - ASP.NET MVC を使用した StructureMap - configure() メソッドは廃止されましたか?
IOC を使用してコントローラー インスタンスを構築するために、実際に StructureMAP ObjectFactory を使用している CustomControllerFactory を使用して、DefaultControllerFactory をオーバーライドしました。しかし、Controller インスタンスを見つけられず、それをフェイルオーバーする方法がいくつかあります。ノート。私はすでに Global.asax にも DEFaultControllerFactory を設定しています。レジストリを SM に登録する以外に、何かしなければならないことはありますか。
コントローラーを登録すると問題が解決することは理解していますが、defaultFactoryのようにコントローラーを自動的に検出できないのはなぜですか?
structuremap - StructureMap: オープン ジェネリックのデフォルト コンストラクターをどのように定義しますか?
次のようなオープンジェネリックを使用した構成があります。
リポジトリを構築するときに最も貪欲なコンストラクターを使用しないように SM に指示する必要があります。どうすればいいですか?
ForRequestedType<> を使用しているときは十分に簡単ですが、非ジェネリック バージョンでは実行できないようです。
c# - StructureMap を使用して名前付きインスタンスをキャッシュする
StructureMap にデフォルト以外のインスタンスをキャッシュさせる方法がわかりません。このようなコードでデフォルトのインスタンスをキャッシュできます
これは期待どおりに機能します。そして、名前付きインスタンスをうまく作成できます
しかし、セッションごとに「CurrentUser」をキャッシュしたいのですが、 .CacheBy() は CreatePluginFamilyExpression<> にのみ存在し、CreatePluginFamilyExpression<> から IsExpression<> に取得するように指示できる唯一の方法は、プロパティ TheDefault を使用することです。私はデフォルトを作成しますが、これは望ましくありません。
dependency-injection - ストラクチャーマップ 2.0 ドキュメント
私は DI/IOC メソッドを学び始めたばかりで、Structuremap からこれまでに見たものが好きです。問題は、現在のプロジェクトが .NET 2.0 に制限されているため、Structuremap の新しいバージョン (2.5) を使用できないことです。そうは言っても、誰かが v2.0 のドキュメントを教えてもらえますか? ほとんどの記事とチュートリアルは v2.5 を使用しており、以前のバージョンを使用しているのはほんの一部です。私が見つけたものは本質的に非常に基本的なものであり、Structuremap が提供するすべての機能を見たいと思っています。ありがとう