gpt4 book ai didi

c# - GraphQL + Autofac

转载 作者:行者123 更新时间:2023-12-05 05:11:05 24 4
gpt4 key购买 nike

我目前正在探索 GraphQL。在我的一个 ObjectGraphTypes 中,我想注入(inject)一个服务实现,该实现向 EF 查询一些附加数据。

public class RoomType : ObjectGraphType<Room>
{
public RoomType(IUserRepository userRepository)
{
Field(x => x.Id).Description("Identifier for a room");
Field(x => x.Name).Description("Name of the room");
Field<ListGraphType<UserType>, IEnumerable<User>>().Name("Users").Resolve(ctx =>
{
var roomId = ctx.Source.Id;
return userRepository.GetUsersInRoom(roomId);
});
}
}

RoomType 和 IUserRepository 都已在 Autofac 容器中注册。但是,在执行过程中 RoomType 无法解析,因为它缺少无参数构造函数,这让我认为它是通过反射而不是通过容器构造的。关于如何进行的任何建议?

谢谢!

最佳答案

问题出在架构中。你必须有一个在容器中注册的 ISchema 的实现。您还需要注册 IDependencyResolver 的实现,它是 GraphQl 库 (GraphQL.IDependencyResolver) 中的一个接口(interface),如下所示:

 builder.Register<IDependencyResolver>(c =>
{
var context = c.Resolve<IComponentContext>();
return new FuncDependencyResolver(type => context.Resolve(type));
});

最后,确保您所有的schemasqueriestypes 都已在autofac 中注册。

关于c# - GraphQL + Autofac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com