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.