没错,Kephas.Runtime
namespace 通过基础IRuntimeTypeInfo
接口(在Kephas.Core
包中)提供了一个轻量级的可扩展元数据。使用扩展方法访问它主要有两种方式:
// get the type information from an object/instance.
var typeInfo = obj.GetRuntimeTypeInfo();
// convert a Type/TypeInfo to a IRuntimeTypeInfo
typeInfo = type.AsRuntimeTypeInfo();
从这里开始,您可以操作属性、字段、方法、注释(属性)等,通常由它们的名称索引。一个非常好的功能是IRuntimeTypeInfo
扩展,允许在运行时添加动态值。
请注意,IRuntimeTypeInfo
specials ITypeInfo
(在Kephas.Reflection
命名空间中),它也是 中的基本接口Kephas.Model
。你是对的,它Kephas.Model
提供了一个更复杂的功能,这可能对更复杂的元数据模型有意义,包括实体、服务、活动和你能想到的任何分类器,以及从 .NET 反射以外的源加载模型(JSON、XML、数据库等)。
另一方面是直到版本 5.2.0,IRuntimeTypeInfo
将由密封RuntimeTypeInfo
类实现。从版本 5.3.0 开始,可以提供您自己的实现,可以不止一个。