类型:字节不能有效地强制转换为GraphQL类型

时间:2018-11-30 15:58:45

标签: c# asp.net-core-2.0 graphql-dotnet

这是我用来获取ByteArrayContent类型的代码:

public class ImageDTO : APIResult
{
    public byte[] ImageData
    {
        get;
        set;
    }

    public string ImageFormat
    {
        get;
        set;
    }

    public ImageDTO()
    {
        ImageData = new byte[]{};
    }
}

public class ImageType : ObjectGraphType<ImageDTO>, IGraphQLType
{
    public ImageType()
    {
        Field(img => img.ImageData);
        Field(img => img.ImageFormat);
    }
}

public class ImageResolver : Resolver, IImageResolver
{
    private readonly ICommonService _commonService;
    public ImageResolver(ICommonService commonService)
    {
        _commonService = commonService;
    }

    public void Resolve(GraphQLQuery graphQLQuery)
    {
        graphQLQuery.Field<ResponseGraphType<ImageType>>("imageresponse", arguments: new QueryArguments(new QueryArgument<NonNullGraphType<StringGraphType>>{Name = "imageId", Description = "id of the project"}), resolve: context =>
        {
            var imageId = context.GetArgument<string>("imageId");
            var imageResult = _commonService.GetImage(imageId);
            if (imageResult == null)
            {
                return NotFoundError(imageId);
            }

            return Response(imageResult);
        }

        );
    }
}

在执行上述代码时,出现以下错误。 类型:字节不能有效地强制转换为GraphQL类型\ r \ n参数名称:类型GraphQL处的类型\ r \ n。

在链接https://github.com/graphql-dotnet/graphql-dotnet/issues/458中,提到了ByteGraphType受支持。我正在使用版本为2.3.0的GraphQL.net nuget软件包。因此,我认为它应该支持ByteGraphType。

能否请您在这里帮助我,了解如何解决此问题。

1 个答案:

答案 0 :(得分:0)

代替此行=> Field(img => img.ImageData);

您可以使用此=> Field(img => img.ImageData, type: typeof(IdGraphType));