internal IMethodCallMessage ReadArray(Object[] callA, Object handlerObject)
{
/*
if (callA.Length != 7)
throw new SerializationException(String.Format(Environment.GetResourceString("Serialization_Method")));
*/
if (IOUtil.FlagTest(messageEnum, MessageEnum.ArgsIsArray))
{
args = callA;
}
else
{
int arrayPosition = 0;
if (IOUtil.FlagTest(messageEnum, MessageEnum.ArgsInArray))
{
if (callA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
args = (Object[])callA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.GenericMethod))
{
if (callA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
instArgs = (Type[])callA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.MethodSignatureInArray))
{
if (callA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
methodSignature = callA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.ContextInArray))
{
if (callA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
callContext = callA[arrayPosition++];
}
if (IOUtil.FlagTest(messageEnum, MessageEnum.PropertyInArray))
{
if (callA.Length < arrayPosition)
throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_Method")));
properties = callA[arrayPosition++];
}
}
return new MethodCall(handlerObject, new BinaryMethodCallMessage(uri, methodName, typeName, instArgs, args, methodSignature, (LogicalCallContext)callContext, (Object[])properties));
}