問題タブ [ninject-conventions]

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 に答える
28 参照

c# - 「I」で始まるすべてのインターフェイスを、COMObj の「I」プレフィックスなしで同じ名前を持つインターフェイスにバインドするには、どの Ninject 規則を使用する必要がありますか?

オブジェクトが COM オブジェクトである会計システムの統合に取り組んでいます。

次のように 1 対 1 でバインドすると、問題なく動作します。

私が抱えている状況は、 と の両方IAcoSDKXAcoSDKXインターフェースでありAcoSDKClass、消費者が にアクセスできないということです。

そのため、スペルだけが異なるため、両方のインターフェイスをバインドする方法を探しています。Ont は「I」で始まり、other は始まりません。そこで、バインドされていないインターフェイスを使用し続けていても、コンストラクター インジェクションによってオブジェクトをアクティブ化するときに、Ninject が何にバインドするかを認識している、従来のバインドを思いつきたいと思います。

これが私がこれまでに思いついた試みであり、成功していません。

それで、実際のニーズに合ったNinjectを使用してコンベンションバインディングを構成するにはどうすればよいのでしょうか?

基本的には、"I" で始まるすべてのインターフェイスを、"I" プレフィックスを除いた同じ名前のインターフェイスにバインドするという規則があります。

編集

さらに検索した結果、AcoSDK.dll の型が自分のアセンブリに埋め込まれていることがわかりました。初期ロードされたタイプのみがバインド可能です。

また、COM オブジェクト インターフェイスを新しく作成することはできますが、Activator.CreateInstanceはインターフェイスであるという口実でそれを初期化しません。次のオブジェクト宣言を参照してください。

この新しい情報を踏まえて、COM オブジェクトで同様の経験をした人はいますか? 新しい を作成しようとしAcoSDKClassたり、何らかの方法でアクセスしようとしたりしましたが、フックがつかないようです。

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

c# - Ninject は、慣例ベースのバインディングを使用して MediatR.IRequestHandler<,> を登録しませんか?

次の例のように:

MediatR.Examples.Ninject

次のように MediatorModule クラスがあります。

Quick Watch overservices.FromThisAssembly().SelectAllClasses().InheritedFrom(typeof(IRequestHandler<,>))で、クラスが正しく検出されていることがわかります。

クイックウォッチ

そして、これが私のコマンドとハンドラーの例です。

BindAllInterfacesメソッドを使用してハンドラーを登録しないようにするにはどうすればよいのでしょうか。

従来のバインディング構文を使用しても、リクエスト ハンドラは登録されません。

私は何が欠けていますか?