Author: robertj
Date: 2007-08-23 02:22:53 -0400 (Thu, 23 Aug 2007)
New Revision: 84680
Modified:
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ValueCollectionParameterReader.cs
Log:
2007-08-21 Robert Jordan <[EMAIL PROTECTED]>
* ValueCollectionParameterReader.cs (Read):
Add support for array parameters. Fixes #82519.
Modified:
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
2007-08-23 06:17:06 UTC (rev 84679)
+++ trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog
2007-08-23 06:22:53 UTC (rev 84680)
@@ -1,3 +1,8 @@
+2007-08-21 Robert Jordan <[EMAIL PROTECTED]>
+
+ * ValueCollectionParameterReader.cs (Read):
+ Add support for array parameters. Fixes #82519.
+
2007-07-29 Vladimir Krasnov <[EMAIL PROTECTED]>
* TypeStubManager.cs: fixed BindingInfo.ctor, reverted to ONLY_1_1
Modified:
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ValueCollectionParameterReader.cs
===================================================================
---
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ValueCollectionParameterReader.cs
2007-08-23 06:17:06 UTC (rev 84679)
+++
trunk/mcs/class/System.Web.Services/System.Web.Services.Protocols/ValueCollectionParameterReader.cs
2007-08-23 06:22:53 UTC (rev 84680)
@@ -90,18 +90,39 @@
object[] res = new object [parameters.Length];
for (int n=0; n<res.Length; n++)
{
- string val = collection [parameters[n].Name];
- if (val == null) throw new
InvalidOperationException ("Missing parameter: " + parameters[n].Name);
- try
- {
- res [n] = StringToObj
(parameters[n].ParameterType, val);
- }
- catch (Exception ex)
- {
- string error = "Cannot convert '" + val
+ "' to " + parameters[n].ParameterType.FullName + "\n";
- error += "Parameter name: " +
parameters[n].Name + " --> " + ex.Message;
- throw new InvalidOperationException
(error);
- }
+ ParameterInfo pi = parameters [n];
+
+ if (pi.ParameterType.IsArray) {
+ string[] values = collection.GetValues
(pi.Name);
+ if (values == null)
+ throw new
InvalidOperationException ("Missing parameter: " + pi.Name);
+ Type elemType =
pi.ParameterType.GetElementType ();
+ Array a = Array.CreateInstance
(elemType, values.Length);
+ for (int i = 0; i < values.Length; i++)
{
+ try {
+ a.SetValue (StringToObj
(elemType, values [i]), i);
+ } catch (Exception ex) {
+ string error = "Cannot
convert '" + values [i] + "' to " + elemType + "\n";
+ error += "Parameter
name: " + pi.Name + " --> " + ex.Message;
+ throw new
InvalidOperationException (error);
+ }
+ }
+ res [n] = a;
+ } else {
+ string val = collection [pi.Name];
+ if (val == null)
+ throw new
InvalidOperationException ("Missing parameter: " + pi.Name);
+ try
+ {
+ res [n] = StringToObj
(pi.ParameterType, val);
+ }
+ catch (Exception ex)
+ {
+ string error = "Cannot convert
'" + val + "' to " + pi.ParameterType + "\n";
+ error += "Parameter name: " +
pi.Name + " --> " + ex.Message;
+ throw new
InvalidOperationException (error);
+ }
+ }
}
return res;
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches