VerifyNotIRemoteDispatch() private static method

private static VerifyNotIRemoteDispatch ( Type reflectedType ) : void
reflectedType System.Type
return void
Example #1
0
        private static void VerifyIsOkToCallMethod(object server, IMethodMessage msg)
        {
            bool flag = false;
            MarshalByRefObject marshalByRefObject = server as MarshalByRefObject;

            if (marshalByRefObject == null)
            {
                return;
            }
            bool     fServer;
            Identity identity = MarshalByRefObject.GetIdentity(marshalByRefObject, out fServer);

            if (identity != null)
            {
                ServerIdentity serverIdentity = identity as ServerIdentity;
                if (serverIdentity != null && serverIdentity.MarshaledAsSpecificType)
                {
                    Type serverType = serverIdentity.ServerType;
                    if (serverType != (Type)null)
                    {
                        MethodBase  methodBase    = StackBuilderSink.GetMethodBase(msg);
                        RuntimeType reflectedType = (RuntimeType)methodBase.DeclaringType;
                        if ((Type)reflectedType != serverType && !reflectedType.IsAssignableFrom(serverType))
                        {
                            throw new RemotingException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("Remoting_InvalidCallingType"), (object)methodBase.DeclaringType.FullName, (object)serverType.FullName));
                        }
                        if (reflectedType.IsInterface)
                        {
                            StackBuilderSink.VerifyNotIRemoteDispatch(reflectedType);
                        }
                        flag = true;
                    }
                }
            }
            if (flag)
            {
                return;
            }
            RuntimeType reflectedType1 = (RuntimeType)StackBuilderSink.GetMethodBase(msg).ReflectedType;

            if (!reflectedType1.IsInterface)
            {
                if (!reflectedType1.IsInstanceOfType((object)marshalByRefObject))
                {
                    throw new RemotingException(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Environment.GetResourceString("Remoting_InvalidCallingType"), (object)reflectedType1.FullName, (object)marshalByRefObject.GetType().FullName));
                }
            }
            else
            {
                StackBuilderSink.VerifyNotIRemoteDispatch(reflectedType1);
            }
        }