public static void Main()
{
RemotingConfiguration.Configure("Client.exe.config");
RemotableType type1 = new RemotableType();
type1.StringMethod();
}
对应的IL为:
.method public hidebysig static void Main() cil managed
{
.entrypoint
// Code Size: 24 byte(s)
.maxstack 1
.locals (
[RemotableType]RemotableType type1)
L_0000: ldstr "Client.exe.config"
L_0005: call void [mscorlib]System.Runtime.Remoting.RemotingConfiguration::Configure(string)
L_000a: newobj instance void [RemotableType]RemotableType::.ctor()
L_000f: stloc.0
L_0010: ldloc.0
L_0011: callvirt instance string [RemotableType]RemotableType::StringMethod()
L_0016: pop
L_0017: ret
}
newobj将会调用ActivationServices.IsCurrentContextOK()
callvirt将会调用RealProxy.PrivateInvoke()