問題タブ [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.
c# - Structuremap スコープ/ライフサイクル ガイダンス?
機能上の理由 (シングルトンなど) でスコープを制御する必要がある以外に、デフォルトのスコープ (一時的なものですか?) から別のものに切り替える理由はありますか?
デフォルトのスコープに固執すると、すべてのプラグイン タイプのすべてのデフォルト インスタンスが、リクエストごとに効果的にインスタンス化されます (Web アプリを想定)、それは正しいですか? これはパフォーマンスに著しく影響しますか?
ログインしたユーザーごとに 1 つのインスタンスに制限するために Http セッション スコープを使用することを検討しました。デフォルトのスコープを使用すると、これらのインスタンスは、ページ リクエストが処理されている間だけメモリに保持されます。どちらが好ましいかはわかりません。
StructureMap を使用している場合、通常、各プラグイン タイプのスコープをどのように設定しますか?
洞察をありがとう、
フィル
c# - StructureMapで条件付きでインスタンスを取得します
NtfsFileSystemStructureEvaluatorとFtpFileSystemStructureEvaluatorの2つの具体的な実装を持つインターフェイスIFileSystemStructureEvaluatorがあります。
コンストラクターに渡されるURIがFTPURIのファイルURIであるかどうかに応じて、適切なIFileSystemStructureEvaluatorを要求できるようにしたいと思います。
StructureMapでこれを実現するにはどうすればよいですか?
ありがとう
c# - StructureMap で ObjectFactory をリセットする
StructureMap に依存するいくつかの単体テストを書いているので、[SetUp] メソッドで ObjectFactory を完全にリセットしたいと考えています。これは私の [SetUp] メソッドが今どのように見えるかです:
ObjectFactory.WhatDoIHave() メソッドを実行でき、構成が含まれていないため、構成がリセットされたように見えます。ただし、オブジェクトのキャッシュされたインスタンスは削除されず、後続のテストで返されます。ObjectFactoryを完全にリセットする方法はありますか?
ObjectFactory.EjectAllInstancesOf() を使用する必要があるかもしれないと思っていましたが、それは役に立たないようです。
バージョン 2.5.3 を使用しています。
これは、私が話していることを示すために、いくつかの不自然なコードです。私はこのテストに合格することを期待していますが、そうではありません。
.net - StructureMap Registy コンストラクターでインスタンスを取得するにはどうすればよいですか?
StructureMap Registy コンストラクター内で (別のレジストリに登録された) あるタイプのインスタンスを取得するにはどうすればよいですか? 私はそのようなコードを使いたい:
IApplicationSettings は、アプリケーション設定へのインターフェイスです。このインターフェイスを実装する具象型 (現在は ConfigFileApplicationSettings クラス) は、次のように別のレジストリに登録されます。
また、両方のレジストリが Bootstrapper に登録されています。
レジストリ コンストラクターで IApplicationRegisty のインスタンスを取得しようとすると、(もちろん) エラーが発生します。StructureMap を正しい方法で使用する方法を完全には理解していません。私は何か別の方法で物事を行うべきかもしれません。とにかく、レジストリ コンストラクターに早期に登録されたタイプのインスタンスを取得できますか?
structuremap - StructureMap プロファイルを使用して名前付きインスタンスをセットアップする方法は?
ここSOでかなりのグーグル検索と検索を行いましたが、同様の質問や回答が見つかりませんでした。
一般的な SM 構成では、単一の PluginType に対して複数の名前付きインスタンスを追加できます。
問題ありません。問題は、プロファイルを作成するときに同じことができないことです。プロファイルの使用方法を説明するほとんどの例For<>()
では、渡された のメソッドを使用していProfileExpression
ます。
上記の通常の構成でできるように、同じ PluginType に複数の名前付きインスタンスを追加する方法が見つからないようです。を介して利用できる他の唯一の方法ProfileExpression
はType<>()
ですが、この目的に使用できるかどうかはわかりません。
編集:Type<>()
代わりに使用しようとしFor<>()
ましたが、正しい方向に進んでいるようですが、別の問題にぶつかりました。よりよく説明するために、私がやろうとしていることのより良い例を次に示します (これは私が structuremap-users グループに投稿したもので、まだ答えはありません):
そのため、プロファイルを「日産」に設定してもGetNamedInstance<>("New")
、間違ったプロファイルからインスタンスが返されましNewNissanCar
たNewHondaCar
。
興味深いことに、GetInstance<>()
正しいプロファイルを使用していますが、インスタンス名を渡すことができないため、実装するプロファイルから任意の具象型を返しますICar
(そのインターフェイスに追加された最後の具象型を返すだけだと思います)。
.net - StructureMap、LinqToSql、テストのベスト プラクティス
これは StructureMap を使用した最初のプロジェクトです。これは MVC Web アプリであり、データアクセスに LinqToSql を使用しています。私はリポジトリパターンに従っているので、大量のテストでデータベースを回避できます。ただし、私の CRUD 操作では、 DataContextにテストごとに新しいデータベースを作成させます。
私のドメイン モデルは独自のアセンブリに保持されています。
StructureMap を使用したテストおよび本番環境で正しい接続文字列が使用されていることを確認する最善の方法は何ですか?
asp.net-mvc - Asp.Net MVC アプリケーションで Structuremap を使用して ISession をリポジトリに注入する
私のリポジトリはすべて、コンストラクターで ISession を使用します。
Asp.Net MVC アプリケーションでは、StructureMap を使用して、StructureMap レジストリに ISession を設定するにはどうすればよいですか? コンテナーにも SessionFactory を追加する必要がありますか? FluentNHibernate は物事を変えますか?
c# - StructureMapを使用して、特定のタイプのパラメーターのジェネリックインターフェイスのすべての実装を返すことはできますか?
汎用インターフェースIValidatorがあります。StructureMapを使用して、特定のタイプTのIValidatorを実装するすべてのクラスのリストを取得できるようにしたい。たとえば、
IValidatorを実装するすべてのクラスを取得する方法を知っていますが、typeパラメーターのタイプでフィルターする必要があります。
誰かが私にガイダンスや提案を与えることができますか?
ありがとう。
structuremap - 構造マップ ジェネリック型スキャナー
上級
IRequestService<T>
StructureMap を使用して、インターフェイスに対して TRequestService という名前のオブジェクトを返すアセンブリ スキャン ルールを定義できますか
例:
FooRequestService
IRequestService<FooRequest>
要求されたときに注入されるBarRequestService
IRequestService<BarRequest>
要求されたときに注入される
詳細
ジェネリック インターフェイスが定義されている
そして、このインターフェースを実装する複数の Request オブジェクトがあります
今、私はこれらのクラスを登録する必要がある時点にいます。これにより、StructureMap がそれらの作成方法を認識できるようになります。これは、コントローラーに次の ctor が必要なためです (StructureMap に a を挿入する必要がありますFooRequestService
) 。
今私の問題を回避するために、空のインターフェイスをFooRequestService
実装しました。汎用インターフェイスを実装する代わりに、この空のインターフェイスを実装しています。
次に、私のコントローラー ctor はそのように見えます。これは、StructureMaps のデフォルト コンベンション スキャナーで動作します。
IRequestService<T>
これらの空のインターフェイス定義を作成する必要がないように、StructureMap のアセンブリ スキャナーを使用して、TRequestService という名前のすべてのオブジェクト (T = "Foo"、"Bar" など) を登録するルールを作成するにはどうすればよいでしょうか?
何か他のものをミックスに投入するには、StructureMap のアセンブリ スキャンを処理しているときに、定義するアセンブリへの参照がないIRequestService<T>
ため、これを行うときに何らかのリフレクションを使用する必要があります。「 Scan を使用したジェネリック型の StructureMap 自動登録」への回答をスキャンしましたが、その回答にはインターフェイス定義を含むアセンブリへの参照が必要なようです。
私はカスタム StructureMap.Graph.ITypeScanner を作成しようとしていますが、そこで何をすべきかについて行き詰まっています (主にリフレクションの経験がほとんどないため)。
intellisense - インテリセンスドキュメントをStructureMapに追加します
デフォルトでは、インテリセンスで取得できるのは関数とそのシグネチャだけです。インテリセンスを使用したドキュメントも入手できればと思います。このドキュメントを含むxmlファイルをdllと一緒に配置することになっていることに気付きました。
これはどこから入手できますか?それとも私がこれを達成するための他の方法はありますか?