2 // System.Runtime.Remoting.Messaging.ReturnMessage.cs
5 // Dietmar Maurer (dietmar@ximian.com)
7 // (C) Ximian, Inc. http://www.ximian.com
11 using System.Collections;
12 using System.Reflection;
14 namespace System.Runtime.Remoting.Messaging {
16 internal class ReturnMessage : IMethodReturnMessage, IMethodMessage {
18 MonoMethodMessage msg;
19 IMethodCallMessage request;
21 public ReturnMessage (object returnValue, object [] outArgs,
22 int outArgCount, LogicalCallContext callCtx,
23 IMethodCallMessage request)
25 // fixme: why do we need outArgCount?
26 msg = new MonoMethodMessage ((MonoMethod)request.MethodBase, outArgs);
27 this.request = request;
28 msg.rval = returnValue;
32 public ReturnMessage (Exception exc, IMethodCallMessage request)
34 msg = new MonoMethodMessage ((MonoMethod)request.MethodBase, null);
35 this.request = request;
37 msg.ctx = request.LogicalCallContext;
46 public object [] Args {
52 public bool HasVarArgs {
54 return msg.HasVarArgs;
58 public LogicalCallContext LogicalCallContext {
64 public MethodBase MethodBase {
66 return msg.MethodBase;
70 public string MethodName {
72 return msg.MethodName;
76 public object MethodSignature {
78 return msg.MethodSignature;
83 public virtual IDictionary Properties {
89 public string TypeName {
101 public object GetArg (int arg_num)
103 return msg.GetArg (arg_num);
106 public string GetArgName (int arg_num)
108 return msg.GetArgName (arg_num);
111 public Exception Exception {
117 public int OutArgCount {
119 return msg.OutArgCount;
123 public object [] OutArgs {
129 public virtual object ReturnValue {
135 public object GetOutArg (int arg_num)
137 return msg.GetOutArg (arg_num);
140 public string GetOutArgName (int arg_num)
142 return msg.GetOutArgName (arg_num);