protected IObjectTypeConfig <S, T> Config(IObjectTypeConfig <S, T> config) { return(new ObjectTypeConfig <S, T> { Name = config.Name ?? Name, Hooks = new[] { Hooks, config.Hooks } .SelectMany(d => d) .GroupBy ( kvp => kvp.Key, (key, kvps) => new { Key = key, Value = kvps.SelectMany(x => x.Value).ToList() } ) .ToDictionary(x => x.Key, y => y.Value), Mutables = config.Mutables.Concat(Mutables).ToList(), Volatiles = config.Volatiles.Concat(Volatiles).ToList(), Views = Views.Concat(config.Views).Distinct().ToList(), Actions = Actions.Concat(config.Actions).Distinct().ToList(), Initializers = config.Initializers.Concat(Initializers).ToList(), PreProcessor = config.PreProcessor ?? PreProcessor, Proxify = config.Proxify ?? Proxify, Snapshoty = config.Snapshoty ?? Snapshoty }); }
protected ObjectType(IObjectTypeConfig <S, T> config) : base(config.Name ?? "AnonymousObject") { ShouldAttachNode = true; Flags = TypeFlags.Object; Initializers = config.Initializers; PreProcessor = config.PreProcessor; Mutables = config.Mutables; Views = config.Views; Hooks = config.Hooks; Volatiles = config.Volatiles; Actions = config.Actions; Proxify = config.Proxify; Snapshoty = config.Snapshoty; Properties = ToProperties(); IdentifierAttribute = FindIdentifierAttribute(); }
public static IObjectType <T> Object <T>(IObjectTypeConfig <IDictionary <string, object>, T> config) { return(new ObjectType <T>(config)); }
public static IObjectType <S, T> Object <S, T>(IObjectTypeConfig <S, T> config) where S : class { return(new ObjectType <S, T>(config)); }
protected abstract I Enhance(IObjectTypeConfig <S, T> config);
private I EnhanceWith(IObjectTypeConfig <S, T> config) { return(Enhance(Config(config))); }