📄 18.4.txt
字号:
Listing 18.4 A Custom Proxy Implementation
public override IMessage Invoke(IMessage msg)
{
Console.WriteLine(“proxy started”);
if (msg is IMethodCallMessage)
Console.WriteLine(“IMethodCallMessage”);
if (msg is IMethodReturnMessage)
Console.WriteLine(“IMethodReturnMessage”);
Type msgType = msg.GetType();
Console.WriteLine(“Message Type: {0}”, msgType.ToString());
Console.WriteLine(“Message Properties”);
IDictionary dict = msg.Properties;
// Set the ‘__Uri’ property of ‘IMessage’ to ‘URI’ property of ‘ObjRef’.
dict[“__Uri”] = this.url;
IDictionaryEnumerator dictEnum =
(IDictionaryEnumerator)dict.GetEnumerator();
while (dictEnum.MoveNext())
{
object key = dictEnum.Key;
string keyName = key.ToString();
object val = dictEnum.Value;
Console.WriteLine(“\t{0} : {1}”, keyName, dictEnum.Value);
if (keyName == “__Args”)
{
object[] args = (object[])val;
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(“\t\targ: {0} value: {1}”, i, args[i]);
}
}
if ((keyName == “__MethodSignature”) && (val != null))
{
object[] args = (object[])val;
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(“\t\targ: {0} value: {1}”, i, args[i]);
}
}
}
IMessage returnMessage = sink.SyncProcessMessage(msg);
IMethodReturnMessage methodReturnMessage =
(IMethodReturnMessage)returnMessage;
Console.WriteLine(“IMethodReturnMessage.ReturnValue: {0}”,
methodReturnMessage.ReturnValue);
Console.WriteLine(“proxy finished”);
return returnMessage;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -