Ejemplo n.º 1
0
        public static IFullPropertyMetadata Nest <TParentEntity, TEntity>(
            this IFullPropertyMetadata propertyMetadata,
            Func <TParentEntity, TEntity?> parentGettter)
        {
            var propertyMetadataType = typeof(NestedPropertyMetadata <, ,>)
                                       .MakeGenericType(typeof(TParentEntity), typeof(TEntity), propertyMetadata.PropertyType);

            return(Activator.CreateInstance(propertyMetadataType, parentGettter, propertyMetadata) as IFullPropertyMetadata
                   ?? throw new InvalidOperationException());
        }
Ejemplo n.º 2
0
        public NestedPropertyMetadata(
            Func <TParentEntity, TEntity> parent,
            IFullPropertyMetadata propertyMetadata)
        {
            PropertyType = propertyMetadata.PropertyType;
            PropertyName = propertyMetadata.PropertyName;
            Fingerprint  = $"{propertyMetadata.Fingerprint}::{typeof(TParentEntity).Name}";

            Getter = x =>
            {
                if (parent.Invoke((TParentEntity)x) is object obj)
                {
                    return(propertyMetadata.Getter.Invoke(obj));
                }

                return(default !);