所以这是我面临的当前问题:
我有从XML Schema动态生成的C#业务对象类。
我动态构建表单以显示和捕获绑定到Business Objects的数据。
我将序列化(xml)对象存储到数据库中。
我需要保留与我的商家中每个属性相关联的显示属性 对象C#类(如何完成这个?)
假设我有一个人事业务对象:
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是Width = 300和Height = 30的TextBox 我的PhoneType.HomePhone和PhoneType.WorkPhone是宽度为200且高度为30的文本框。
在DataBase中保留这些显示属性并将它们与Business Objects中的每个属性相关联的最佳方法是什么?考虑到我的大多数Business Objects都是由非常深的对象图表示的...所以我想知道根据我的模型的深层次性质,从数据库中递归存储和重新生成显示属性的最佳方法是什么。
现在有几个条件: - 我不想存储静态表单,因为我的应用程序非常动态。 XSD - >代码 - >形成 - 显示属性可以是用户特定的(例如某些字段的背景颜色),因此不能只具有通用表单模板 - 我只需要一个很好的机制来将POCO属性与显示属性相关联,这样我就可以动态构建我的表单并持续更改数据库
我正在探索在每个Business Objects中创建PropertyBag(集合)属性的可能性,并在我导航对象图时递归填充它们,但还没有走远......
答案 0 :(得分:1)
我们处理这个问题的方法是为每个类提供唯一的标识符属性,然后在数据库中存储UI定义,包括必需的字段,大小,标签值等。
我们实际上也会对类中的每个属性进行属性化,以便将那些视觉上重要的属性与那些仅仅是“帮助者”的属性分开。
在运行时,我们使用反射来检索要显示的类和属性的属性,然后从数据库中获取适当的可视修饰符列表。