public static IObjectTypeDescriptor <T> AsNode <T>( this IObjectTypeDescriptor <T> descriptor, NodeResolverDelegate <T> nodeResolver) { if (descriptor == null) { throw new ArgumentNullException(nameof(descriptor)); } if (nodeResolver == null) { throw new ArgumentNullException(nameof(nodeResolver)); } return(AsNode(descriptor, sp => new NodeResolver <T>(nodeResolver))); }
public IObjectFieldDescriptor NodeResolver( NodeResolverDelegate <TNode, TId> nodeResolver) { Func <IServiceProvider, INodeResolver> nodeResolverFactory = services => new NodeResolver <TNode, TId>(nodeResolver); _typeDescriptor .Interface <NodeType>() .Extend() .OnBeforeCreate(c => { c.ContextData[RelayConstants.NodeResolverFactory] = nodeResolverFactory; }); return(_typeDescriptor.Field(_propertyOrMethod) .Type <NonNullType <IdType> >()); }
public IObjectFieldDescriptor ResolveNode <TId>( NodeResolverDelegate <object, TId> fieldResolver) { if (fieldResolver is null) { throw new ArgumentNullException(nameof(fieldResolver)); } return(ResolveNode(async ctx => { if (ctx.LocalContextData.TryGetValue( WellKnownContextData.InternalId, out object?o) && o is TId id) { return await fieldResolver(ctx, id).ConfigureAwait(false); } return null; })); }
public IObjectFieldDescriptor ResolveNode(NodeResolverDelegate <TNode, TId> fieldResolver) { ITypeConverter?typeConverter = null; return(ResolveNode(async ctx => { if (ctx.LocalContextData.TryGetValue(WellKnownContextData.InternalId, out var id)) { if (id is TId c) { return await fieldResolver(ctx, c).ConfigureAwait(false); } typeConverter ??= ctx.GetTypeConverter(); c = typeConverter.Convert <object, TId>(id); return await fieldResolver(ctx, c).ConfigureAwait(false); } return null; })); }
public IObjectFieldDescriptor NodeResolver <TId>( NodeResolverDelegate <object, TId> nodeResolver) => ResolveNode(nodeResolver);
public IObjectFieldDescriptor NodeResolver( NodeResolverDelegate <TNode, object> nodeResolver) => ResolveNode <object>(
public NodeResolver(NodeResolverDelegate <TNode> resolver) { _resolver = resolver ?? throw new ArgumentNullException(nameof(resolver)); }
public IObjectFieldDescriptor NodeResolver(NodeResolverDelegate <TNode, TId> nodeResolver) => ResolveNode(nodeResolver);
public IObjectFieldDescriptor NodeResolver( NodeResolverDelegate <TNode, object> nodeResolver) { return(NodeResolver <object>(nodeResolver)); }
public IObjectFieldDescriptor ResolveNode( NodeResolverDelegate <TNode, TId> fieldResolver) => ResolveNode(async ctx =>