示例#1
0
        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);
            }
        }
示例#2
0
        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);
                    }
                }
            }
        }
示例#3
0
 public DynamicObjectPropertyJsonConverter(IDynamicPropertyMetaDataResolver metadataResolver)
 {
     _metadataResolver = metadataResolver;
 }