public abstract class ObjR : MarshalByRefObject { public abstract void Do(); } public class ObjC : ObjR { public override void Do() { Console.WriteLine("C"); } public class ObjD : ObjR { public override void Do() { Console.WriteLine("D"); }
var c1 = new IpcServerChannel("a", "c"); ChannelServices.RegisterChannel(c1, false); var c2 = new IpcServerChannel("b", "d"); ChannelServices.RegisterChannel(c2, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(ObjC), "e", WellKnownObjectMode.SingleCall); RemotingConfiguration.RegisterWellKnownServiceType(typeof(ObjD), "f", WellKnownObjectMode.SingleCall);
var c = (ObjR)Activator.GetObject(typeof(ObjR), "ipc://c/e"); c.Do(); c = (ObjR)Activator.GetObject(typeof(ObjR), "ipc://d/f"); c.Do();