CADObjRef objref = arg as CADObjRef;
if (null != objref) {
- string typeName = new string (objref.TypeName.ToCharArray());
- string uri = new string (objref.URI.ToCharArray());
+ string typeName = string.Copy (objref.TypeName);
+ string uri = string.Copy (objref.URI);
int domid = objref.SourceDomain;
ChannelInfo cinfo = new ChannelInfo (new CrossAppDomainData (domid));
case TypeCode.UInt16: return (UInt16)arg;
case TypeCode.UInt32: return (UInt32)arg;
case TypeCode.UInt64: return (UInt64)arg;
- case TypeCode.String: return new String (((string)arg).ToCharArray());
+ case TypeCode.String: return string.Copy ((string) arg);
case TypeCode.DateTime: return new DateTime (((DateTime)arg).Ticks);
default:
if (arg is TimeSpan) return new TimeSpan (((TimeSpan)arg).Ticks);
// Used when passing a IMethodCallMessage between appdomains
internal class CADMethodCallMessage : CADMessageBase {
string _uri;
- string _methodName;
- string _typeName;
-
- CADArgHolder _methodSignature;
-
- internal string TypeName {
- get {
- return _typeName;
- }
- }
-
+
+ internal RuntimeMethodHandle MethodHandle;
+
internal string Uri {
get {
return _uri;
}
}
- internal string MethodName {
- get {
- return _methodName;
- }
- }
-
static internal CADMethodCallMessage Create (IMessage callMsg) {
IMethodCallMessage msg = callMsg as IMethodCallMessage;
if (null == msg)
}
internal CADMethodCallMessage (IMethodCallMessage callMsg) {
- _methodName = callMsg.MethodName;
- _typeName = callMsg.TypeName;
_uri = callMsg.Uri;
+ MethodHandle = callMsg.MethodBase.MethodHandle;
ArrayList serializeList = null;
_args = MarshalArguments ( callMsg.Args, ref serializeList);
- // check if we need to save method signature
- if (RemotingServices.IsMethodOverloaded (callMsg)) {
- if (null == serializeList)
- serializeList = new ArrayList();
-
- _methodSignature = new CADArgHolder (serializeList.Count);
- serializeList.Add(callMsg.MethodSignature);
- }
-
// Save callcontext
SaveLogicalCallContext (callMsg, ref serializeList);
internal object [] GetArgs (ArrayList args) {
return UnmarshalArguments (_args, args);
}
-
- internal object [] GetMethodSignature (ArrayList args) {
- if (null == _methodSignature)
- return null;
-
- return (object []) args [_methodSignature.index];
- }
internal int PropertiesCount {
get {