Почему метод GObject по-прежнему вызывается, даже если аргументы обратного вызова не совпадают с аргументами в XML?

Предположим, у меня есть такой метод

<interface name="org.Test.ChildTest">
    <!-- set_age(guint32 new_age): sets new age -->
        <method name="set_age">
            <arg type="u" name="new_age" direction="in"/>
        </method>

В моей таблице методов у меня есть:

{ (GCallback) child_test_set_age, dbus_glib_marshal_child_test_BOOLEAN__UINT_POINTER, 0 }

и правильная сигнатура метода GObject:

gboolean
child_test_set_age (ChildTest *childTest, guint ageIn, GError** error)

Почему мой метод,child_test_set_age()по-прежнему вызывается в DBus, даже если аргументы обратного вызова не совпадают с указанными в моем XML? Например, если я добавлю еще один аргумент послеguint ageIn, какchar* или жеguint или какой-то другой случайный тип?

Я заметил, что это не будет работать, если функция DBus включает членов с направлением OUT. Кажется, что любой ненужный аргумент типа IN отбрасывается, и вызов выполняется как обычно.

Хотя я считаю, что это не имеет никакого значения, я использую инструмент привязки D-BUS 0.94, glib-2.30.0 и dbus-glib 0.94.

Ответы на вопрос(1)

Ваш ответ на вопрос