将 .NET 枚举转换为 GraphQL EnumerationGraphType

Dar*_*ric 6 c# .net-core graphql graphql-dotnet

如何将枚举转换为 GraphQL 使用的 EnumerationGraphType?这是一个例子来说明我在说什么:

public enum MeetingStatusType
{
    Tentative,
    Unconfirmed,
    Confirmed,
}
Run Code Online (Sandbox Code Playgroud)
public class MeetingDto
{
    public string Id { get; set; }
    public string Name { get; set; }
    public MeetingStatusType Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public class MeetingStatusEnumType : EnumerationGraphType<MeetingStatusType>
{
    public MeetingStatusEnumType()
    {
        Name = "MeetingStatusType";
    }
}
Run Code Online (Sandbox Code Playgroud)
public class MeetingType : ObjectGraphType<MeetingDto>
{
    public MeetingType()
    {
        Field(m => m.Id);
        Field(m => m.Name, nullable: true);
        Field<MeetingStatusEnumType>(m => m.Status); // Fails here
     }
}
Run Code Online (Sandbox Code Playgroud)

显然这不起作用,因为没有从MeetingStatusTypeto的隐式转换MeetingStatusEnumType在文档中,它们映射的模型将直接依赖于MeetingStatusEnumType,但将 GraphQL 依赖引入域类型和对象之类的东西似乎并不好。我觉得我错过了一种非常简单的方法来注册这个领域,但我终生无法弄清楚。任何帮助将不胜感激!

Dar*_*ric 6

看起来我不应该尝试使用表达式重载来映射字段。将其改为以下内容似乎已经解决了这个问题:

Field(e => e.Id);
Field(e => e.Name, nullable: true);
Field<MeetingStatusEnumType>("meetingStatus", resolve: e => e.Source.Status);
Run Code Online (Sandbox Code Playgroud)