Frage

Ich habe eine Reihe von Objekten in db4o-Format in einer DAT-Datei. Die Objekte in dieser Datei sind OldNamespace.MyObject, OldAssemblyName.

Das Problem ist, ich den Namespace und Montage, um etwas mehr permanent, da umbenannt haben. Kurz die Umbenennung die Montage und Namespace (das ist, was ich tue), ist es eine Möglichkeit, die Objekte in den neuen Montag / Namespace-Namen öffnen?

Oder bin ich für immer mit „MyTest3“ für den Namen der Assembly und Namespace fest?!

War es hilfreich?

Lösung

fand ich die Antwort schneller, als ich dachte, ich würde in der Wiki-Dokumentation .

Dies ist die vorübergehende Art und Weise tun:

TypeAlias alias = new TypeAlias("OldNameSpace.OldTypeName, OldAssembly", "NewNameSpace.NewTypeName, NewAssembly");
Db4oFactory.Configure().AddAlias(alias);
IObjectContainer db = Db4oFactory.OpenFile(dbfilename);

Je mehr Oberbau (es ist chaotisch Code, aber es ist für eine temporäre fix):

using (IObjectContainer db = Db4oFactory.OpenFile(dbfilename))
{
    var n = db.Ext().StoredClasses();
    foreach (var x in n)
    {
        System.Diagnostics.Debug.WriteLine(x.GetName());
    }
    var c1 = db.Ext().StoredClass("OldNameSpace.OldType, OldAssembly");//
    if (c1 != null)
        c1.Rename("NewNameSpace.OldType, NewAssembly");

    var c2 = db.Ext().StoredClass("System.Collections.Generic.List`1[[OldNameSpace.OldType, OldAssembly]], mscorlib");
    if (c2 != null)
        c2.Rename("System.Collections.Generic.List`1[[NewNameSpace.OldType, NewAssembly]], mscorlib");
}

Wie Sie 'ILists Bedürfnis Aktualisierung sehen können. Stellen Sie sicher, wenn Sie speichern Sie es in eine neue Datei, sonst werden Sie beide Arten in der Ausgabedatei erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top