将 .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
}
}
显然这不起作用,因为没有从 MeetingStatusType
到 MeetingStatusEnumType
的隐式转换。 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>));
如何将枚举转换为 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
}
}
显然这不起作用,因为没有从 MeetingStatusType
到 MeetingStatusEnumType
的隐式转换。 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>));