Как получить объекты, напечатанные в динамической сборке из базы данных db4o? - PullRequest
0 голосов
/ 27 февраля 2011

В моем эксперименте я сохранил некоторые объекты испускаемого типа, которые подклассифицировали тип в сборке ввода, как показано ниже:


///normal assembly
public class Person{ public string Name; public int Age;}

///dynamic assembly "dynAsm"
public class Dude: Person{}

Peron tom = (Person)Activator.CreateInstance(dudeType);
tom.Name = "Tom";
tom.Age = 100;
db.Store(tom);

Он успешно сохранен в файле базы данных. Потому что я проверил файл с помощью ObjectManager, и увидел, что объект Том на самом деле там.

Но когда я использовал методы запросов IObjectContainer и IQuery для программного извлечения сохраненного объекта, я ничего не получил взамен.

Я пробовал:



db.Query(dudeType); //dudeType is from a dynamic assembly with the same name as 
                    //the one used to generate "tom"
//nothing
db.Query(typeof(Person));
//nothing
db.Query(typeof(object));
//still nothing

и используя объект IQuery таким же образом, я тоже ничего не смог получить.

Итак, кто-то, пожалуйста, скажите мне: почему я не могу этого сделать? Почему даже подход базового класса тоже не сработает?


PS: Когда я сохранил динамическую сборку в файл, загрузил ее и повторил запрос, все работало нормально. Но, как вы знаете, CLR не позволяет выгружать сборку, поэтому сохранение загрузки не совсем то, что я хотел

...