Можно ли использовать внедрение зависимостей для нескольких схем GraphQL? - PullRequest
1 голос
/ 09 октября 2019

В настоящее время у меня есть две доступные схемы, которые разрешают совершенно разные запросы. В это время файл запуска функции Azure, проходящий процесс внедрения зависимостей, использует только самую последнюю добавленную схему. Таким образом, запрос разрешается только к самой последней добавленной схеме. Я считаю, что это конфликт имен с используемым интерфейсом, но я не знаю, как его обойти.

Я попытался добавить службы как временные, так и ограниченные.

builder.Services.AddTransient<ISchema>(_ => new SchemaOne(new FuncDependencyResolver(type => (IGraphType)_.GetRequiredService(type))));
builder.Services.AddTransient<ISchema>(_ => new SchemaTwo(new FuncDependencyResolver(type => (IGraphType)_.GetRequiredService(type))));

или

builder.Services.AddScoped<ISchema>(_ => new SchemaOne(new FuncDependencyResolver(type => (IGraphType)_.GetRequiredService(type))));
builder.Services.AddScoped<ISchema>(_ => new SchemaTwo(new FuncDependencyResolver(type => (IGraphType)_.GetRequiredService(type))));

Цель состоит в том, чтобы оба запроса могли разрешить ихсоответствующие схемы. В это время { queryOne { name } } возвращает ошибку "message": "Cannot query field \"queryOne\" on type \"QueryTwoType\".",

...