Правильно, пространство имен Kephas.Runtime
предоставляет облегченные расширяемые метаданные через базовый интерфейс 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
специализируется ITypeInfo
(в Kephas.Reflection
пространстве имен), который также является базовым интерфейсом в Kephas.Model
. Вы правы в том, что Kephas.Model
предоставляет более сложную функциональность, которая может иметь смысл для более сложной модели метаданных, включая сущности, сервисы, действия и любые классификаторы, о которых вы можете подумать, а также загружает модель также из источников, отличных от .NET отражение (JSON, XML, база данных и т. Д.).
Другой аспект заключается в том, что до версии 5.2.0 IRuntimeTypeInfo
будет реализован закрытым классом RuntimeTypeInfo
. Начиная с версии 5.3.0, можно будет предоставить собственные реализации, которых может быть несколько.