private SoapArrayInfo ParseSoap12ArrayType(string itemType, string arraySize)
{
SoapArrayInfo soapArrayInfo = new SoapArrayInfo();
if (itemType != null && itemType.Length > 0)
soapArrayInfo.qname = itemType;
else
soapArrayInfo.qname = "";
string[] dimensions;
if (arraySize != null && arraySize.Length > 0)
dimensions = arraySize.Split(null);
else
dimensions = new string[0];
soapArrayInfo.dimensions = 0;
soapArrayInfo.length = -1;
for (int i = 0; i < dimensions.Length; i++)
{
if (dimensions[i].Length > 0)
{
if (dimensions[i] == "*")
{
soapArrayInfo.dimensions++;
}
else
{
try
{
soapArrayInfo.length = Int32.Parse(dimensions[i], CultureInfo.InvariantCulture);
soapArrayInfo.dimensions++;
}
catch (Exception e)
{
if (e is OutOfMemoryException)
{
throw;
}
throw new ArgumentException(SR.Format(SR.XmlInvalidArrayLength, dimensions[i]), "value");
}
}
}
}
if (soapArrayInfo.dimensions == 0)
soapArrayInfo.dimensions = 1; // default is 1D even if no arraySize is specified
return soapArrayInfo;
}