Re[4]: Автоматическое создание вложенных объектов
От: IvanKuzmich  
Дата: 21.06.06 04:55
Оценка:
IK>>У нас сделано так: если поле объекта null — значит оно неизвестно и данные из базы не получены. Если не null — значит в поле уже загружены достоверные данные с заполненной структурой.
IK>>Поэтому хотелось бы сделать, чтобы конструктор вызывался автоматически.

IT>
IT>public class Obj1
IT>{
IT>    public Obj1()
IT>    {
IT>    }

IT>    public Obj1(InitContext ctx)
IT>    {
IT>        f2 = new Obj2();
IT>    }    

IT>    public int f1;
IT>    public Obj2 f2;
IT>}
IT>

IT>?

Да, как вариант!

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

Поэтому, придеться написать что-то вроде такого.

        public Obj1(InitContext ctx)
        {
            for (int i = 0; i < ctx.DataSource.Count; i++)
            {
                if (ctx.DataSource.GetName(i).StartsWith("f2."))
                {
                    f2 = new Obj2()
                }
            }
        }


И что если у объекта двойная вложенность, т.е. например поле AS [f1.f2.f3]? В этом случае и объект Obj2 надо создавать через new Obj2(ctx), но InitContext уже нужен другой.

Может я заморачиваюсь и есть попроще какой вариант?

И, возможно, архитектурный подход выбран не верно, интересно было бы посмотреть на архитектуру готового решения с BLToolkit.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.