db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join
in Search
More Search Options

objectmanager

Last post 09-02-2008, 06:08 AM by Peter Brightman. 2 replies.
Sort Posts: Previous Next
  •  09-01-2008, 04:17 PM 50863

    objectmanager

    hi community,

    ich versuche grade mit C# einen eigenen objectmanager zu schreiben. Dieser zeigt nur die Klassen an die man "selbst" gespeichert hat bzw. man kann die Klassen über den Namespace filtern. Alle Klassen werden in einer treeview angezeigt, jede node hat eine subnode welche die Anzahl gespeicherter Objekte der Klasse anzeigt. Klickt man auf die Klasse, erscheint rechts eine Listview mit den Typen aller Felder der Klasse. Klickt man auf die subnode werden alle Objekte aufgelistet. Bei der Auflistung der Objekte möchte ich nun natürlich die Werte der Felder anzeigen, ich benutze dazu:

    IStoredClass sc = ....

    IStoredField[] sfld = sc.GetStoredFields();

    Über eine Loop aller StoredFields füge ich dann die Spalten mit den Namen der Felder in eine ListView hinzu.

    Nun hole ich alle object-ids:

    long[] ids = sc.GetIDs();

    Dann in einer Loop:

    Object o = oc.Ext().GetByID(l);

    Nun weiß ich aber nicht wie ich den Wert eines Feldes eines Objekts über den Namen/Typ kriege. Irgendwie muss das ja gehen. Bin für jeden Tipp dankbar.

     

     


    ~~pb~~~~~~~~~~~~~~
  •  09-01-2008, 07:34 PM 50866 in reply to 50863

    Re: objectmanager

    Peter Brightman:
    Nun weiß ich aber nicht wie ich den Wert eines Feldes eines Objekts über den Namen/Typ kriege. Irgendwie muss das ja gehen. Bin für jeden Tipp dankbar.

    Hallo Peter,

    das geht über #StoredField.get(object), wobei object das entsprechende Objekt ist, wofür Du den Feldwert ermittelt haben möchtest. Anbei ein kleines Beispiel in Java, sollte Dir aber leicht fallen, daraus C# zu backen.

    Grüße, Maik

    import com.db4o.Db4o;
    import com.db4o.ObjectContainer;
    import com.db4o.ext.StoredClass;
    import com.db4o.ext.StoredField;

    public class Test {

        public static void main(String[] args) {
            ObjectContainer db = Db4o.openFile("test.yap");
            for (StoredClass clazz : db.ext().storedClasses()) {
                for (long id : clazz.getIDs()) {
                    Object obj = db.ext().getByID(id);
                    db.activate(obj, Integer.MAX_VALUE);
                    System.out.println(clazz.getName());
                    for (StoredField field : clazz.getStoredFields()) {
                        System.out.println(field.getName() + "=" + field.get(obj));
                    }
                }
            }
            db.close();
        }
    }
     


    http://db4o.blogspot.com/
  •  09-02-2008, 06:08 AM 50871 in reply to 50866

    Re: objectmanager

    Tausend Dank Maik!

    ~~pb~~~~~~~~~~~~~~
View as RSS news feed in XML