强制执行必须在*不同*字段中的每个子类实现的属性的最佳方法是什么?

我试图提出实现SQL数据服务灵活实体模型的“最佳”方法,其中每个类都可以存储为实体,甚至是实体类。

示例:每个子类都有不同

string Id string Kind Dictionary Properties 

到目前为止,我正朝着同时拥有一个Entity类(上面的)和一个类似于某种集合的基类的方向前进

 Dictionary data 

并让每个子类添加到该字典,只需获取/设置属性

 data["EntityKind"].Properties["PropertyName"] 

但是,由于每个类只有一个实体,看起来我应该使用某种Stack(intead of Dictionary),其中层次结构的每个级别都知道它的确切位置。 然后我发现类inheritance就是堆栈,所以我想也许我只是错过了一些真正简化所有这一切的OO概念。 就像是

 abstract eachsubclassmusthaveitsown Entity entity 

每个类都是一个实体,您想要将一些实体元数据与它相关联吗?

听起来属性可能是你最好的镜头。

您将定义一个EntityAttribute类,其成员用于存储描述实体所需的元数据。 然后,这将允许您使用[Entity]标记实体类。 如果所有字段都是必填字段,请为属性类指定一个需要传递值的构造函数。

然后使用reflection来发现实体类。 请注意,您只需要执行一次该发现过程然后对其进行缓存,因此reflection的性能不应成为问题。