我不知道他们是怎么做的,但如果是我,我会使用attributes和reflection。
以下是我想大概会的工作/或rougthly你怎么能做到这一点...
组件
该系统将需要一堆组件或子系统;他们可能是你自己编写的东西或现有的库(如果可以的话,使用现有的库):
- CMS的somekind,除非你想建立一个你已经拥有的系统。
- 允许用户创建“对象”的UI组件/控件。要做得好,这需要一个相当先进的用户界面(SilverLight?HTML5?) - 尽管我猜你可以使用一些非常基本的东西。
- 存储用户的“物”的一些方式 - 这是bascially数据,而且你想保留它存储在某种“中性”库。
- 什么是真正的CRUD - 我正在考虑像Entity Framework,Lightspeed,NHibernate这样的ORM工具。您还需要CRUD操作本身的数据源目标。
诀窍是在点2和3;这是我定义一组可以用来定义用户创建的对象的属性。这些属性是逻辑上将过程连接在一起的属性。因为属性可以在运行时读取:
- 他们将能够驱动允许用户编写其“对象”的UI。
- 准备就绪后,您可以生成实际的物理实现用户定义对象的类,然后用适当的属性修饰这些对象。
- 不知有ORM工具知道如何将这些对象的属性(基于属性)映射到数据存储,或者自己编写DAL - 也许你会DAL包装一个ORM?
我使用的另一种方法基于此,但它也使用接口,数据存储为XML的“blob” - 而不是特定的离散元数据。
动态形式研究。 – 2010-09-22 06:12:04
动态表单会给我设计UI的能力。我可以通过在我的应用程序中托管WinForm设计器或类似的东西来实现。我更感兴趣的是了解MS如何为中间层的所有新实体实现CRUD。 y如何将它推广到可以为任何新的用户定义实体执行CRUD? – Pradeep 2010-09-22 06:49:38