問題タブ [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.
c# - 「I」で始まるすべてのインターフェイスを、COMObj の「I」プレフィックスなしで同じ名前を持つインターフェイスにバインドするには、どの Ninject 規則を使用する必要がありますか?
オブジェクトが COM オブジェクトである会計システムの統合に取り組んでいます。
次のように 1 対 1 でバインドすると、問題なく動作します。
私が抱えている状況は、 と の両方IAcoSDKX
がAcoSDKX
インターフェースでありAcoSDKClass
、消費者が にアクセスできないということです。
そのため、スペルだけが異なるため、両方のインターフェイスをバインドする方法を探しています。Ont は「I」で始まり、other は始まりません。そこで、バインドされていないインターフェイスを使用し続けていても、コンストラクター インジェクションによってオブジェクトをアクティブ化するときに、Ninject が何にバインドするかを認識している、従来のバインドを思いつきたいと思います。
これが私がこれまでに思いついた試みであり、成功していません。
それで、実際のニーズに合ったNinjectを使用してコンベンションバインディングを構成するにはどうすればよいのでしょうか?
基本的には、"I" で始まるすべてのインターフェイスを、"I" プレフィックスを除いた同じ名前のインターフェイスにバインドするという規則があります。
編集
さらに検索した結果、AcoSDK.dll の型が自分のアセンブリに埋め込まれていることがわかりました。初期ロードされたタイプのみがバインド可能です。
また、COM オブジェクト インターフェイスを新しく作成することはできますが、Activator.CreateInstanceはインターフェイスであるという口実でそれを初期化しません。次のオブジェクト宣言を参照してください。
この新しい情報を踏まえて、COM オブジェクトで同様の経験をした人はいますか? 新しい を作成しようとしAcoSDKClass
たり、何らかの方法でアクセスしようとしたりしましたが、フックがつかないようです。
c# - Ninject は、慣例ベースのバインディングを使用して MediatR.IRequestHandler<,> を登録しませんか?
次の例のように:
次のように MediatorModule クラスがあります。
Quick Watch overservices.FromThisAssembly().SelectAllClasses().InheritedFrom(typeof(IRequestHandler<,>))
で、クラスが正しく検出されていることがわかります。
そして、これが私のコマンドとハンドラーの例です。
BindAllInterfaces
メソッドを使用してハンドラーを登録しないようにするにはどうすればよいのでしょうか。
従来のバインディング構文を使用しても、リクエスト ハンドラは登録されません。
私は何が欠けていますか?