Imported Upstream version 4.2.0.179

Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
This commit is contained in:
Xamarin Public Jenkins
2015-08-26 07:17:56 -04:00
committed by Jo Shields
parent 183bba2c9a
commit 6992685b86
7507 changed files with 90259 additions and 657307 deletions

View File

@ -34,6 +34,7 @@ using System;
using System.Collections;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
namespace System.Runtime.Remoting.Messaging {
@ -117,7 +118,41 @@ namespace System.Runtime.Remoting.Messaging {
Init();
ResolveMethod();
}
#if FEATURE_REMOTING
internal MethodCall (Object handlerObject, BinaryMethodCallMessage smuggledMsg)
{
if (handlerObject != null)
{
_uri = handlerObject as String;
if (_uri == null)
{
// This must be the tranparent proxy
MarshalByRefObject mbr = handlerObject as MarshalByRefObject;
if (mbr != null)
{
throw new NotImplementedException ("MarshalByRefObject.GetIdentity");
/*
bool fServer;
srvID = MarshalByRefObject.GetIdentity(mbr, out fServer) as ServerIdentity;
uri = srvID.URI;
*/
}
}
}
_typeName = smuggledMsg.TypeName;
_methodName = smuggledMsg.MethodName;
_methodSignature = (Type[])smuggledMsg.MethodSignature;
_args = smuggledMsg.Args;
_genericArguments = smuggledMsg.InstantiationArgs;
_callContext = smuggledMsg.LogicalCallContext;
ResolveMethod();
if (smuggledMsg.HasProperties)
smuggledMsg.PopulateMessageProperties(Properties);
}
#endif
internal MethodCall ()
{
}
@ -244,7 +279,7 @@ namespace System.Runtime.Remoting.Messaging {
internal virtual void InitDictionary()
{
MethodCallDictionary props = new MethodCallDictionary (this);
var props = new MCMDictionary (this);
ExternalProperties = props;
InternalProperties = props.GetInternalProperties();
}
@ -386,6 +421,11 @@ namespace System.Runtime.Remoting.Messaging {
set { _targetIdentity = value; }
}
bool IInternalMessage.HasProperties()
{
return (ExternalProperties != null) || (InternalProperties != null);
}
Type[] GenericArguments {
get {
if (_genericArguments != null)