(設定ファイル内の)dllのリストを見て、それらをすべてロードし、独自のスレッドで各dllの特定のメソッドを開始するWindowsサービスがあります。これらの各 dll は、このサービスで使用するために特定のクラス (Module クラス) から継承する必要があり、そのクラスの一部は MPI オブジェクトです。これは基本的に、dll メソッドがメソッドを呼び出して直接対話できるようにするクラスのインスタンスです。サービス。方法は次のとおりです。
- サービスが dll をロードします
- リフレクションを使用して、Module クラスを継承するクラスがあることを確認します
- その Module 継承クラスの新しいインスタンスを作成します
- MPI クラスの新しいインスタンスを作成します。これには、どのモジュールがそれを使用しているかに関する識別情報があります
- 新しく作成された MPI オブジェクトを新しいモジュール クラスに割り当てます。
- モジュールのメインスレッドを開始します
基本モジュール クラス自体は独自の dll です (サービスと外部 dll の両方が動作できるようにするため)。私がやりたいことは、サービスが MPI オブジェクト (特別な値) を新しい Module クラスに割り当てられるようにすることですが、そのクラスが MPI オブジェクトの割り当てや値のいずれかを変更できるようにしたくありません。その中に。継承されたクラスの読み取り専用ですが、他のクラスから割り当て可能です。私は、これを可能にするためにどのような変更を加える必要があるか、どのようにセットアップしたかという方法でこれを行うことはできないと思います. それは可能ですか?
MPI は、メインのホスティング サービスの API のようなものです。エラーログなど、いくつかの集中化されたものを処理します。サービスが新しいモジュールをロードすると、ID が割り当てられます。そのモジュールが呼び出さMPI.ErrorLog(someStuff)
れると、メイン サービス メモリへの参照を持ち、実際のエラー ライターにアクセスできる MPI は、この時点でモジュール ID # にこのエラーが発生したことを書き込みます。ID をモジュールを継承するクラスに対してプライベートにする必要がありますが、メイン サービスに対してではなく、それによって ID を設定できるようにします。モジュールが新しい MPI オブジェクト自体を作成し、これらを変更できるようにしたくないので、すべてを設定するコンストラクターでプライベート変数を言わないでください。