GQL005: Illegal resolver usage
| Value | |
|---|---|
| Rule ID | GQL004 |
| Category | Usage |
| Default severity | Error |
| Enabled by default | Yes |
| Code fix provided | Yes |
| Introduced in | v7.7 |
| Removed in | v8.0 |
Note: This rule was replaced by GQL012
Cause
A ResolveXXX method was invoked for the field that is defined within the
non-output graph type.
Rule description
Resolvers are only allowed on the output graph types. Output graph types are
types derived from the ObjectGraphType class or implementing
IObjectGraphType interface.
How to fix violations
Remove the ResolveXXX method call.
Example of a violation
The following example shows Resolve and ResolveAsync methods used on the
fields defined within input and interface graph types.
public class MyInputGraphType : InputObjectGraphType<User>
{
public MyInputGraphType() =>
Field<StringGraphType>("Name").Resolve(context => context.Source.Name);
}
public class MyInterfaceGraphType : InterfaceGraphType<Person>
{
public MyInterfaceGraphType(IStore store) =>
Field<ListGraphType<NonNullGraphType<PersonGraphType>>>("Children")
.ResolveAsync(async context => await store.GetChildrenAsync(context.Source.Name));
}Example of how to fix
public class MyInputGraphType : InputObjectGraphType<User>
{
public MyInputGraphType() =>
Field<StringGraphType>("Name");
}
public class MyInterfaceGraphType : InterfaceGraphType<Person>
{
public MyInterfaceGraphType(IStore store) =>
Field<ListGraphType<NonNullGraphType<PersonGraphType>>>("Children");
}Suppress a warning
If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.
#pragma warning disable GQL005
// The code that's violating the rule is on this line.
#pragma warning restore GQL005To disable the rule for a file, folder, or project, set its severity to none
in the
configuration file.
[*.cs]
dotnet_diagnostic.GQL005.severity = noneFor more information, see How to suppress code analysis warnings.