强制执行必须在*不同*字段中的每个子类实现的属性的最佳方法是什么?
我试图提出实现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的性能不应成为问题。