将 .NET 枚举转换为 GraphQL EnumerationGraphType

Converting .NET Enum to GraphQL EnumerationGraphType

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

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

显然这不起作用,因为没有从 MeetingStatusTypeMeetingStatusEnumType 的隐式转换。 In the documentation,他们映射的模型将直接依赖于 MeetingStatusEnumType,但在诸如域类型和对象之类的东西上引入对 GraphQL 的依赖似乎不太好。 我觉得我错过了一个注册这个领域的痛苦简单的方法,但我无法弄清楚我的生活。任何帮助将不胜感激!

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

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

您需要告诉 graphql dotnet 如何将 Enum 类型映射到 EnumerationGraphType

GraphTypeTypeRegistry.Register(typeof(MeetingStatusType), typeof(EnumerationGraphType<MeetingStatusType>));

另一种方式;

Field(m => m.Status, type: typeof(EnumerationGraphType<MeetingStatusType>));