这是我用来获取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。
能否请您在这里帮助我,了解如何解决此问题。
答案 0 :(得分:0)
代替此行=> Field(img => img.ImageData);
您可以使用此=> Field(img => img.ImageData, type: typeof(IdGraphType));