0

インターフェイスを宣言する「Core」というプロジェクトがあります。そして、そのインターフェイスを実装するクラスをインスタンス化する「サービス」というプロジェクトがあります(依存関係で「コア」プロジェクトを参照します)。

「コア」(EXE)を実行できるため、両方のプロジェクトは独立して実行されます。実行している場合は、「サービス」が実行されているかどうかを確認し、実行されている場合は、「サービス」プロセスで作成されたクラスのインスタンスを取得して、そのメソッドを呼び出します。

こんな感じです(ほぼ)。

「コア」プロジェクトで

namespace Core
{
    public interface IController { void Update(long ID, string Value, string Components); }

    public static class Utils
    {
        public static IController Controller;

        internal void Main(string[] args)
        {
            //Here, if "Service" is running, then get "Controller" from it
        }
    }
}

「サービス」プロジェクトで

namespace Service
{
    internal class ControlMe : Core.IController
    {
        public void Update(long ID, string Value, string Components)
        {
            //Do other things
        }

        internal void Main(string[] args)
        {
            Core.Utils.Controller = new ControlMe();
        }
    }
}

あるプロセスから別のプロセスに何らかの形でマーシャリングする必要がありますが、それを呼び出す相互運用メソッドには慣れていません。

4

0 に答える 0