using System; using System.Reflection; using System.Runtime.Remoting; class MyClass { public void MethodA(DateTime dt) { Console.WriteLine("MethodA invoked at " + dt.ToLongTimeString()); } } class Starter { static void Main() { CreateLocal(); CreateRemote1(); CreateRemote2(); } static void CreateLocal() { object obj = Activator.CreateInstance(typeof(MyClass)); ((MyClass)obj).MethodA(DateTime.Now); } static void CreateRemote1() { ObjectHandle hObj = Activator.CreateInstance("library","MyClass"); object obj = hObj.Unwrap(); MethodInfo method = obj.GetType().GetMethod("MethodA"); method.Invoke(obj, new object[1] { DateTime.Now }); } static void CreateRemote2() { AppDomain domain = AppDomain.CurrentDomain; object obj = domain.CreateInstanceFromAndUnwrap("library.dll","MyClass"); MethodInfo method = obj.GetType().GetMethod("MethodA"); method.Invoke(obj, new object[1] { DateTime.Now }); } }