Итак, вот текущая проблема, с которой я сталкиваюсь:
У меня есть классы бизнес-объектов C #, которые динамически генерируются из схемы XML.
Я создаю формы динамически для отображения и захвата данных, связанных с моими бизнес-объектами.
Я храню мои сериализованные (xml) объекты в базе данных.
Мне необходимо сохранить свойства отображения, связанные с каждым свойством в моем бизнесе.
Классы Object C # (Как это сделать ??)
Допустим, у меня есть бизнес-объект Person:
public class Person
{
public string Name {get;set;}
public PhoneType Phone {get;set;}
}
public class PhoneType
{
public string HomePhone{get;set;}
public string WorkPhone{get;set;}
}
Теперь допустим, я создал новую персону:
Person me = new Person();
me.Name = "BOB";
me.Phone = new PhoneType()
me.Phone.HomePhone = "1234";
me.Phone.WorkPhone = "4321";
Теперь, когда я строю свою форму, я знаю, что Person.Name - это TextBox с шириной = 300 и высотой = 30
а мой PhoneType.HomePhone и PhoneType.WorkPhone являются текстовыми полями шириной 200 и высотой = 30 *. 1027 *
Как лучше всего сохранить эти свойства отображения в базе данных и связать их с каждым из свойств в моих бизнес-объектах? Учитывая, что большинство моих бизнес-объектов представлены очень глубокими графами объектов ... поэтому мне интересно, как лучше всего рекурсивно хранить и восстанавливать свойства отображения из базы данных на основе глубокой иерархической природы моей модели.
Теперь несколько условий:
-Я не хочу хранить статические формы, так как мое приложение очень динамично. XSD -> Код -> Форма
-Дисплеи могут зависеть от пользователя (например, задний цвет определенного поля), поэтому не могут просто иметь общие шаблоны форм.
-Мне просто нужен хороший механизм для сопоставления свойств POCO для отображения свойств, чтобы я мог создавать свои формы на лету и сохранять изменения в базе данных
В настоящее время я изучаю возможность создания свойства PropertyBag (коллекции) в каждом из моих бизнес-объектов и рекурсивного заполнения их во время навигации по графу объектов, но пока еще не далеко.