public static async Task ResolveMetaDataRecursiveAsync(this IHasDynamicProperties owner, IDynamicPropertyMetaDataResolver metaDataResolver) { if (owner == null) { throw new ArgumentNullException(nameof(owner)); } if (metaDataResolver == null) { throw new ArgumentNullException(nameof(metaDataResolver)); } var hasDynProps = owner.GetFlatObjectsListWithInterface <IHasDynamicProperties>(); foreach (var hasDynProp in hasDynProps) { await ResolveMetaDataAsync(hasDynProp, metaDataResolver); } }
public static async Task ResolveMetaDataAsync(this IHasDynamicProperties owner, IDynamicPropertyMetaDataResolver metaDataResolver) { if (owner == null) { throw new ArgumentNullException(nameof(owner)); } if (metaDataResolver == null) { throw new ArgumentNullException(nameof(metaDataResolver)); } foreach (var propertyValue in owner.DynamicProperties ?? Array.Empty <DynamicObjectProperty>()) { if (propertyValue.IsTransient() && !string.IsNullOrEmpty(propertyValue.Name)) { var metadata = await metaDataResolver.GetByNameAsync(owner.ObjectType, propertyValue.Name); if (metadata != null) { propertyValue.SetMetaData(metadata); } } } }
public DynamicObjectPropertyJsonConverter(IDynamicPropertyMetaDataResolver metadataResolver) { _metadataResolver = metadataResolver; }