C# 尚未注册“ProjectModels.Graphs.ProjectGraph”类型的服务

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

我正在尝试使用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 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)));
}