18.4.txt
来自「《Microsoft Visual C# .NET 2003开发技巧大全》源代码」· 文本 代码 · 共 48 行
TXT
48 行
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 + =
减小字号Ctrl + -
显示快捷键?