2005-01-11 Joe Shaw <joeshaw@novell.com>
authorJoe Shaw <joeshaw@novell.com>
Tue, 11 Jan 2005 19:59:06 +0000 (19:59 +0000)
committerJoe Shaw <joeshaw@novell.com>
Tue, 11 Jan 2005 19:59:06 +0000 (19:59 +0000)
Patch from Tambet Ingo <tambet@ximian.com>

* mono/DBusType/Array.cs (Get): Get the underlying element type by
calling type.GetElementType().  The code previously depended on
broken Mono behavior, which was fixed in Mono 1.1.3.

* mono/DBusType/Dict.cs (constructor): Fix the parameters for
Activator.CreateInstance() so that the class's constructor is
called with the right parameters.

ChangeLog
mono/DBusType/Array.cs
mono/DBusType/Dict.cs

index b19e01d..a7ec073 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2005-01-11  Joe Shaw  <joeshaw@novell.com>
 
+       Patch from Tambet Ingo <tambet@ximian.com>
+
+       * mono/DBusType/Array.cs (Get): Get the underlying element type by
+       calling type.GetElementType().  The code previously depended on
+       broken Mono behavior, which was fixed in Mono 1.1.3.
+
+       * mono/DBusType/Dict.cs (constructor): Fix the parameters for
+       Activator.CreateInstance() so that the class's constructor is
+       called with the right parameters.
+
+2005-01-11  Joe Shaw  <joeshaw@novell.com>
+
        Patch from Timo Teräs <ext-timo.teras@nokia.com>
 
        * dbus/dbus-connection.c
index bf41763..dd93a5c 100644 (file)
@@ -106,6 +106,9 @@ namespace DBus.DBusType
 
     public object Get(System.Type type)
     {
+      if (type.IsArray)
+        type = type.GetElementType ();
+
       if (Arguments.Suits(elementType, type.UnderlyingSystemType)) {
        this.val = System.Array.CreateInstance(type.UnderlyingSystemType, elements.Count);
        int i = 0;
index f5c76b4..660cac5 100644 (file)
@@ -41,8 +41,9 @@ namespace DBus.DBusType
          
          // Get the argument type and get the value
          Type elementType = (Type) DBus.Arguments.DBusTypes[(char) dbus_message_iter_get_arg_type(dictIter)];
-         object [] pars = new Object[1];
+         object [] pars = new Object[2];
          pars[0] = dictIter;
+         pars[1] = service;
          DBusType.IDBusType dbusType = (DBusType.IDBusType) Activator.CreateInstance(elementType, pars);
          this.val.Add(key, dbusType);
        } while (dbus_message_iter_next(dictIter));