rydotの呟''

プログラミングとかCGとかDTMとか適当にいろいろのことを適度にやる気なく綴るはず。

C#の動的ロードメモ

クライアント(AppDomainTest)

class Program
{
  static void call()
  {
    AppDomain ad = null;
    try
    {
      ad = AppDomain.CreateDomain("TEST");
      var handle = ad.CreateInstance("ClassLibrary1", "ClassLibrary1.Class1");
      int res = ((IClass1)handle.Unwrap()).test();
      System.Console.WriteLine(res);
    }
    finally
    {
      AppDomain.Unload(ad);
    }
  }
  static void Main(string[] args)
  {
    while (true)
    {
      call();
      System.Threading.Thread.Sleep(1000);
    }
  }
}
public interface IClass1
{
  int test();
}

サーバ(ClassLibrary1)

public class Class1 : MarshalByRefObject, AppDomainTest.IClass1
{
  public int test()
  {
    return 10;
  }
}

こんなかんじでクライアントを動かしたままサーバを書き換えたりできるんじゃないかな。