6

如何将枚举转换为 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
     }
}

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

4

3 回答 3

6

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

Field(e => e.Id);
Field(e => e.Name, nullable: true);
Field<MeetingStatusEnumType>("meetingStatus", resolve: e => e.Source.Status);
于 2019-05-09T01:51:16.980 回答
1

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

GraphTypeTypeRegistry.Register(typeof(MeetingStatusType), typeof(EnumerationGraphType<MeetingStatusType>));
于 2019-08-08T08:01:29.567 回答
0

另一种方式;

Field(m => m.Status, type: typeof(EnumerationGraphType<MeetingStatusType>));
于 2020-06-06T01:40:07.967 回答