internal static IGraphElementPropertyModel FromGraphElementModels(params IGraphElementModel[] models) { return(Empty .ConfigureMemberMetadata(_ => _ .AddRange(models .SelectMany(model => model.Metadata.Keys) .SelectMany(x => x.GetTypeHierarchy()) .Distinct() .SelectMany(type => type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)) .Select(property => new KeyValuePair <MemberInfo, MemberMetadata>(property, new MemberMetadata(property.Name)))))); }
public static IGraphElementPropertyModel ConfigureElement <TElement>(this IGraphElementPropertyModel model, Func <IMemberMetadataConfigurator <TElement>, IImmutableDictionary <MemberInfo, MemberMetadata> > transformation) where TElement : class { return(model.ConfigureMemberMetadata( metadata => transformation(new MemberMetadataConfigurator <TElement>(metadata)))); }