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

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

c# - ロガーを注入する IAutofacActionFilter

このモジュールで NLog を使用しています。

ロガーの名前が空/間違っていることを除いて、すべて正常に動作しているようです。の最初の行でOnComponentPreparing、は期待されるLimitTypeMeta<Lazy<IAutofacActionFilter>>[]代わりに ですLogControllerActionFilterAttribute。ロガーの正しいタイプ名を取得するにはどうすればよいですか? 私のログでは、これはロガー名として与えられています:

0、カルチャ = ニュートラル、PublicKeyToken = b77a5c561934e089]][]

編集:

これは、この問題を示す短い完全なプログラムです。上記のモジュールの実装も必要になります。

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

autofac - Autofac での重複登録

Autofac builder.RegisterAssemblyModules(assembly) メソッドを使用してモジュールをスキャンしていますが、正常に動作します。しかし、モジュールが他のモジュールに依存している場合、依存モジュールも個別に登録されているため、重複登録が発生しています。この重複を避ける方法はありますか。

IRegistrationSources アセンブリを実装し、重複登録を回避しようと考えています。それは良いことでしょうか?

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

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 メソッドでデバッグしてブレーク ポイントを設定すると、それが呼び出されます。また、リストされているアセンブリも確認し、ビジネス アセンブリとデータ アセンブリがリストされていますが、モジュールの登録は実行されません。私は何を間違っていますか?

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

c# - タイプまたはモジュールの複数の登録で Autofac Enumeration が機能しない

autofacのドキュメントには次のように記載されています。

Autofac が型のコンストラクター パラメーターを注入している場合、IEnumerable<ITask>それは を提供するコンポーネントを探しませんIEnumerable<ITask>。代わりに、コンテナは ITask のすべての実装を見つけて、それらすべてを注入します。

しかし、実際には、登録された型ごとに、登録された回数だけ追加されます。したがって、次のようにクラスを 2 回登録すると、次のようになります。

次に、列挙で2つのアイテムを取得します!! 単一のモジュール内では、型を 1 回だけ登録するように気を付けていることは明らかなので、問題はありません。しかし、複数のモジュールによって登録された共有モジュールがある場合 (典型的なひし形モジュールの依存関係図)、共有モジュールが他の人によって登録されているのと同じ数のアイテムが列挙内に取得されます...

バグですか?ドキュメントに記載されているように、実装ごとに単一のアイテムを提供するように列挙を強制する方法はありますか?

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

mef - MEF を使用してインポートされた Autofac モジュールがロードされない

多数のアセンブリがあり、それぞれが Autofac.Module を拡張するクラスを使用して Autofac に依存関係を提供しています。これらのそれぞれを MEF エクスポートとして装飾しました。

クライアント アプリケーションの起動の一環として、これらのモジュールをすべて集めます。次に例を示します。

カタログを見ると、すべてのアセンブリのすべてのモジュールが存在することがわかります。

私が持っている質問は、読み込まれた各モジュールで Load メソッドを呼び出すように Autofac に指示するにはどうすればよいかということです。

builder.RegisterAssemblyModules のいくつかの使用法を考えていますが、それをカタログに結び付ける方法についての決定的な瞬間は (まだ) ありません。

ありがとう!

r.

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

c# - パラメータがautofacによって注入されるリフレクションを使用してクラスのインスタンスを作成する

IOC として Autofac を使用している WCF サービスをいくつか作成しています。ここで、Autofac によってパラメーターが注入されるリフレクションを使用して、いずれかのクラスのインスタンスを作成する必要があります。しかし、Activator.CreateInstanceを使用すると、コンストラクターが存在しないため例外が発生します.パラメーターのないコンストラクターを追加した後、Autofacによってインスタンス化されるはずのコンストラクターに渡されたパラメーターがインスタンス化されません.誰でも修正を手伝ってくださいこれ