Re: [Vala] Reflection : getting values in Gee.Collection



I dont know how to do it with object investigation at run time, as you'd
with python, i. e. But your problem is just a form of serialization that
you can achieve with a interface or a base class subclassing all of your
seriable object.
On Sun, Apr 10, 2016 at 14:13 Baptiste Gelez <gelezbaptiste openmailbox org>
wrote:

Actually, I have got a method named create_model that have an Object
named obj as parameter. I want to get all the properties of this object
and store their values in the HashMap result.
For example, let's imagine I have got this class :

public class MyClass : Object {

     public string prop1 {get; set; default = "hello";}

     public ArrayList<string> prop2 {get; set;}

     public MyClass () {
         this.prop2 = new ArrayList<string> ();
         this.prop2.add ("hey");
         this.prop2.add ("test");
     }

}

Then, I would like to have an HashMap<string, string> that look like
this :

"prop1" -> "hello"
"prop2[0] -> "hey"
"prop2[0] -> "test"

just by using this code :

var obj = new MyClass ();
create_model (obj);

With the code I shown you, I can use create_model on object that have
properties of basic types like string, int, etc.
But I wonder how to do this with a Gee.Collection : I know how to
enumerate it and get the type which is stored in this collection, but
I wonder how to instantiate a object of the same type as this which is
stored in the collection, to assign the object I at a given index of the
collection, and
then to get all those properties, and store them in my HashMap<string,
string>.

I hope this time you understand what I mean.

Le 2016-04-10 16:35, Felipe Lavratti a écrit :
Sorry, its not clear to me.
Where is the reflection? You will have the Type name of an Object in
your HasMap, then you will want to create an instance with this name?

On Sun, Apr 10, 2016 at 04:32 Baptiste Gelez
<gelezbaptiste openmailbox org> wrote:

Le 2016-04-09 20:46, Daniel Espinosa a écrit :
May you can use HashMap<string,Value?>()

Value? Makes boxed any value supported by GLib.Value, almost any
value, from basic like int to GLib.Object, any any struct if it
is
properly boxed.

El abr. 9, 2016 12:11 PM, "Baptiste Gelez"
<gelezbaptiste openmailbox org> escribió:

Hello everyone !

I would like to retrieve any property of an object. I presently
use
this
code :

HashMap<string, string> result = new HashMap<string, string> ();

foreach (ParamSpec spec in obj.get_class ().list_properties ())
{
GLib.Value val = GLib.Value (typeof (string));
obj.get_property (spec.get_nick (), ref val);
result [spec.get_nick ()] = (string) val;
}

return result;

There is no problem when I'm getting "simple" values like int,
string,
double, etc ... But I would like to be able to get all the
elements
of
Gee.Collection. Have you got any idea of how to do that ?

Thanks ! (And excuse me for possible English mistakes)

_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list [1] [1]


Links:
------
[1] https://mail.gnome.org/mailman/listinfo/vala-list [1]

I'm not sure that you well understand my question. I probably
poorly
explained.

I'm building a library that'll be able to transform any object into
an
HashMap<string, string> associating the name of the property with
its
value as a string.
In the code I presently have, I can do this with basic types like
int,
string, etc. But I would like to get all the elements of a
Gee.Collection. I can do this by using it's iterator property, but
even
if I know how to enumerate them and how to get their type, I don't
know
how to dynamically create a new instance of this type and convert
en
element of the collection (which I have as an Object) to this type.
I
hope it's clearer now.
_______________________________________________
vala-list mailing list
vala-list gnome org
https://mail.gnome.org/mailman/listinfo/vala-list [1]


Links:
------
[1] https://mail.gnome.org/mailman/listinfo/vala-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]