C# 尚未注册“ProjectModels.Graphs.ProjectGraph”类型的服务
我正在尝试使用entityframework实现GraphQl,我发现了以下错误C# 尚未注册“ProjectModels.Graphs.ProjectGraph”类型的服务,c#,graphql,C#,Graphql,我正在尝试使用entityframework实现GraphQl,我发现了以下错误 GraphQL.ExecutionError: No service for type 'ProjectModels.Graphs.ProjectGraph' has been registered. ---> System.InvalidOperationException: No service for type 'ProjectModels.Graphs.ProjectGraph' has been r
GraphQL.ExecutionError: No service for type 'ProjectModels.Graphs.ProjectGraph' has been registered. ---> System.InvalidOperationException: No service for type 'ProjectModels.Graphs.ProjectGraph' has been registered.
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at GraphQL.Types.Schema.<CreateTypesLookup>b__56_2(Type type)
at GraphQL.Types.GraphTypesLookup.AddTypeIfNotRegistered(Type type, TypeCollectionContext context)
at GraphQL.Types.GraphTypesLookup.HandleField(Type parentType, FieldType field, TypeCollectionContext context)
at GraphQL.Types.GraphTypesLookup.AddType(IGraphType type, TypeCollectionContext context)
at GraphQL.Types.GraphTypesLookup.Create(IEnumerable`1 types, IEnumerable`1 directives, Func`2 resolveType, IFieldNameConverter fieldNameConverter)
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
--- End of stack trace from previous location where exception was thrown ---
at System.Lazy`1.CreateValue()
at GraphQL.Types.Schema.get_AllTypes()
at GraphQL.Instrumentation.FieldMiddlewareBuilder.ApplyTo(ISchema schema)
at GraphQL.DocumentExecuter.ExecuteAsync(ExecutionOptions options)
--- End of inner exception stack trace ---
startup.cs->ConfigureServices中遵循了以下步骤
GraphTypeTypeRegistry.Register<Project, ProjectGraph>();
我缺少什么?请在Startup.cs中的ConfigureServices方法中尝试此操作:
services.AddSingleton<IDependencyResolver>(s => new FuncDependencyResolver(s.GetRequiredService));
services.AddSingleton<ProjectGraph>();
您需要在dotnet core IOC容器中注册依赖项解析器和类
参考:
如果您遵循了他们的startup.cs文件,并按照以下方式编码
foreach (var type in GetGraphQlTypes())
{
services.AddSingleton(type);
}
static IEnumerable<Type> GetGraphQlTypes()
{
return typeof(Startup).Assembly
.GetTypes()
.Where(x => !x.IsAbstract &&
(typeof(IObjectGraphType).IsAssignableFrom(x) ||
typeof(IInputObjectGraphType).IsAssignableFrom(x)));
}
然后确保类位于同一个项目中,否则它将无法工作。请在Startup.cs中的ConfigureServices方法中尝试此操作:
services.AddSingleton<IDependencyResolver>(s => new FuncDependencyResolver(s.GetRequiredService));
services.AddSingleton<ProjectGraph>();
您需要在dotnet core IOC容器中注册依赖项解析器和类
参考:
如果您遵循了他们的startup.cs文件,并按照以下方式编码
foreach (var type in GetGraphQlTypes())
{
services.AddSingleton(type);
}
static IEnumerable<Type> GetGraphQlTypes()
{
return typeof(Startup).Assembly
.GetTypes()
.Where(x => !x.IsAbstract &&
(typeof(IObjectGraphType).IsAssignableFrom(x) ||
typeof(IInputObjectGraphType).IsAssignableFrom(x)));
}
然后确保类位于同一个项目中,否则它将无法工作。我不熟悉该框架,但它使用.NET Core的DI容器,例外情况是您试图将ProjectGraph注入到某些Classic中,我不熟悉该框架,但它使用.NET Core的DI容器,例外情况是您试图将ProjectGraph注入到某些类中。谢谢,我从程序集中添加了所有类型,并将它们移动到单独的项目中,这就是为什么找不到这些类型。在本教程中,类型没有注册,但它可以工作。为什么?谢谢,我已经从汇编中添加了所有类型,并将它们移动到单独的项目中,这就是为什么找不到这些类型。在本教程中,类型没有注册,但它可以工作。为什么?
foreach (var type in GetGraphQlTypes())
{
services.AddSingleton(type);
}
static IEnumerable<Type> GetGraphQlTypes()
{
return typeof(Startup).Assembly
.GetTypes()
.Where(x => !x.IsAbstract &&
(typeof(IObjectGraphType).IsAssignableFrom(x) ||
typeof(IInputObjectGraphType).IsAssignableFrom(x)));
}