首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于我对可扩展元数据的需求,Kephas.Model包似乎有点重。有没有更轻的选择?

对于我对可扩展元数据的需求,Kephas.Model包似乎有点重。有没有更轻的选择?
EN

Stack Overflow用户
提问于 2019-03-27 17:45:18
回答 1查看 15关注 0票数 1

我的需求是对我们使用的实体使用某种类型的元数据系统,但是是可扩展的,这意味着除了查询属性和方法之外,我们还需要支持某种自定义的元数据。标准的Type/TypeInfo类在某种程度上是有用的,但是它们不能被定制来添加特定的属性来支持我们拥有的各种模式:树节点、master-detail和其他。

Kephas.Model提供了一个复杂的基础设施来支持这类情况,包括混合和维度等高级功能,但这对我们的系统来说有点太多了。对于我们拥有的代码优先实体,我们需要更轻量级的东西。

有没有关于我们可以使用什么来满足这种需求的建议?我注意到了Kephas.Reflection名称空间,这似乎是一个合适的候选名称空间,但我不确定如何正确使用它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-28 05:19:05

没错,Kephas.Runtime名称空间通过基础IRuntimeTypeInfo接口(在Kephas.Core包中)提供了一个轻量级的可扩展元数据。使用扩展方法访问它主要有两种方式:

代码语言:javascript
复制
    // get the type information from an object/instance.
    var typeInfo = obj.GetRuntimeTypeInfo();

    // convert a Type/TypeInfo to a IRuntimeTypeInfo
    typeInfo = type.AsRuntimeTypeInfo();

从这里开始,您可以操作属性、字段、方法、注释(属性)等,通常按其名称进行索引。一个非常好的特性是IRuntimeTypeInfo是一个扩展,允许在运行时添加动态值。

请注意,IRuntimeTypeInfo专门使用ITypeInfo (在Kephas.Reflection名称空间中),这也是Kephas.Model中的基本接口。您说得对,Kephas.Model提供了更复杂的功能,这对于更复杂的元数据模型可能是有意义的,包括实体、服务、活动和您能想到的任何分类器,还可以从.NET反射之外的源(JSON、XML、数据库等)加载模型。

另一方面,在5.2.0版本之前,IRuntimeTypeInfo将由密封的RuntimeTypeInfo类实现。从版本5.3.0开始,可以提供您自己的实现,可以有多个实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55374092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档