From b3ba709079bb0fe1cc2a1afdfe25dc227a223972 Mon Sep 17 00:00:00 2001 From: Joe Shaw Date: Tue, 11 Jan 2005 19:59:06 +0000 Subject: 2005-01-11 Joe Shaw Patch from Tambet Ingo * 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. --- mono/DBusType/Array.cs | 3 +++ mono/DBusType/Dict.cs | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'mono') diff --git a/mono/DBusType/Array.cs b/mono/DBusType/Array.cs index bf41763c..dd93a5cc 100644 --- a/mono/DBusType/Array.cs +++ b/mono/DBusType/Array.cs @@ -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; diff --git a/mono/DBusType/Dict.cs b/mono/DBusType/Dict.cs index f5c76b4c..660cac57 100644 --- a/mono/DBusType/Dict.cs +++ b/mono/DBusType/Dict.cs @@ -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)); -- cgit