問題タブ [autofac-module]
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# - ロガーを注入する IAutofacActionFilter
このモジュールで NLog を使用しています。
ロガーの名前が空/間違っていることを除いて、すべて正常に動作しているようです。の最初の行でOnComponentPreparing
、は期待されるLimitType
のMeta<Lazy<IAutofacActionFilter>>[]
代わりに ですLogControllerActionFilterAttribute
。ロガーの正しいタイプ名を取得するにはどうすればよいですか? 私のログでは、これはロガー名として与えられています:
0、カルチャ = ニュートラル、PublicKeyToken = b77a5c561934e089]][]
編集:
これは、この問題を示す短い完全なプログラムです。上記のモジュールの実装も必要になります。
autofac - Autofac での重複登録
Autofac builder.RegisterAssemblyModules(assembly) メソッドを使用してモジュールをスキャンしていますが、正常に動作します。しかし、モジュールが他のモジュールに依存している場合、依存モジュールも個別に登録されているため、重複登録が発生しています。この重複を避ける方法はありますか。
IRegistrationSources アセンブリを実装し、重複登録を回避しようと考えています。それは良いことでしょうか?
c# - ASP.NET WebAPI での Autofac モジュールの登録
これまで、MVC プロジェクト内のクラス内で型登録を行ってきましたが、モジュールでそれを実行しようとしています。私のプロジェクトは次のように構成されています
Project.Data : 私のエンティティ フレームワーク クラスと DataContext が含まれています。autofac モジュールProject.Businessを介して登録するインターフェイス (IDbContext) を実装するように datacontect をリファクタリングし ました。IDbContext インスタンスが挿入されるビジネス ロジック クラスが含まれています。クラスは、autofac モジュール Project.Webを介して登録される対応するインターフェイスを実装します: アセンブリ スキャンを使用してすべての autofac モジュールを登録する asp.net プロジェクト
サンプルコード
プロジェクト.データ
プロジェクト.ビジネス
プロジェクト.Web
ただし、API サービスを呼び出そうとすると、次のエラーが発生します。
タイプ 'DataController' のコントローラーを作成しようとしたときにエラーが発生しました。コントローラーにパラメーターなしのパブリック コンストラクターがあることを確認します。
RegisterContainer メソッドでデバッグしてブレーク ポイントを設定すると、それが呼び出されます。また、リストされているアセンブリも確認し、ビジネス アセンブリとデータ アセンブリがリストされていますが、モジュールの登録は実行されません。私は何を間違っていますか?
c# - タイプまたはモジュールの複数の登録で Autofac Enumeration が機能しない
autofacのドキュメントには次のように記載されています。
Autofac が型のコンストラクター パラメーターを注入している場合、
IEnumerable<ITask>
それは を提供するコンポーネントを探しませんIEnumerable<ITask>
。代わりに、コンテナは ITask のすべての実装を見つけて、それらすべてを注入します。
しかし、実際には、登録された型ごとに、登録された回数だけ追加されます。したがって、次のようにクラスを 2 回登録すると、次のようになります。
次に、列挙で2つのアイテムを取得します!! 単一のモジュール内では、型を 1 回だけ登録するように気を付けていることは明らかなので、問題はありません。しかし、複数のモジュールによって登録された共有モジュールがある場合 (典型的なひし形モジュールの依存関係図)、共有モジュールが他の人によって登録されているのと同じ数のアイテムが列挙内に取得されます...
バグですか?ドキュメントに記載されているように、実装ごとに単一のアイテムを提供するように列挙を強制する方法はありますか?
mef - MEF を使用してインポートされた Autofac モジュールがロードされない
多数のアセンブリがあり、それぞれが Autofac.Module を拡張するクラスを使用して Autofac に依存関係を提供しています。これらのそれぞれを MEF エクスポートとして装飾しました。
クライアント アプリケーションの起動の一環として、これらのモジュールをすべて集めます。次に例を示します。
カタログを見ると、すべてのアセンブリのすべてのモジュールが存在することがわかります。
私が持っている質問は、読み込まれた各モジュールで Load メソッドを呼び出すように Autofac に指示するにはどうすればよいかということです。
builder.RegisterAssemblyModules のいくつかの使用法を考えていますが、それをカタログに結び付ける方法についての決定的な瞬間は (まだ) ありません。
ありがとう!
r.
c# - パラメータがautofacによって注入されるリフレクションを使用してクラスのインスタンスを作成する
IOC として Autofac を使用している WCF サービスをいくつか作成しています。ここで、Autofac によってパラメーターが注入されるリフレクションを使用して、いずれかのクラスのインスタンスを作成する必要があります。しかし、Activator.CreateInstanceを使用すると、コンストラクターが存在しないため例外が発生します.パラメーターのないコンストラクターを追加した後、Autofacによってインスタンス化されるはずのコンストラクターに渡されたパラメーターがインスタンス化されません.誰でも修正を手伝ってくださいこれ