internal IMethodReturnMessage ReadArray(Object[] returnA, IMethodCallMessage methodCallMessage, Object handlerObject)
{
if (IOUtil.FlagTest(messageEnum, MessageEnum.ArgsIsArray))
{
args = returnA;
}
else
{
int arrayPosition = 0;
if (IOUtil.FlagTest(messageEnum, MessageEnum.ArgsInArray))
{
if (returnA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
args = (Object[])returnA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.ReturnValueInArray))
{
if (returnA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
returnValue = returnA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.ExceptionInArray))
{
if (returnA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
exception = (Exception)returnA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.ContextInArray))
{
if (returnA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
callContext = returnA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.PropertyInArray))
{
if (returnA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
properties = returnA[arrayPosition++];
}
}
return new MethodResponse(methodCallMessage, handlerObject, new BinaryMethodReturnMessage(returnValue, args, exception, (LogicalCallContext)callContext, (Object[])properties));
}