我是 HotChocolate 的新手,我正在尝试 PoC 一些简单的用法。我创建了非常简单的 .graphql 文件:
#camera.graphql
type Camera {
id: ID!
name: String!
}
type Query {
getCamera: Camera!
}
还有一个非常简单的用于相机包装的 .NET 代码:
public class QlCamera
{
public static QlCamera New()
{
return new QlCamera
{
Id = Guid.NewGuid().ToString(),
Name = Guid.NewGuid().ToString()
};
}
public string Id { get; set; }
public string Name { get; set; }
}
以及用于创建模式:
public void CreateSchema()
{
string path = System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var smBuilder = SchemaBuilder.New();
smBuilder.AddDocumentFromFile(path + "/GraphQL/camera.graphql");
smBuilder.AddResolver("Query", "getCamera", () => QlCamera.New());
var schema = smBuilder.Create();
}
然而,在最后一行我得到一个异常:HotChocolate.SchemaException:'发生多个模式错误:该字段Camera.id
没有解析器。- 类型:相机 该字段Camera.name
没有解析器。- 类型:相机'
我试图创建:
public class QlCameraType : ObjectType<QlCamera>
{
protected override void Configure(IObjectTypeDescriptor<QlCamera> descriptor)
{
descriptor.Name("Camera");
descriptor.Field(t => t.Id).Type<NonNullType<StringType>>();
descriptor.Field(t => t.Name).Type<StringType>();
}
}
并替换
smBuilder.AddResolver("Query", "getCamera", () => QlCamera.New());
和
smBuilder.AddResolver("Query", "getCamera", () => new QlCameraType());
但我继续得到同样的例外。
显然我在这里错过了一些东西,但我无法理解到底是什么。有人可以解释一下我想念什么吗?
(我已经通过文档几次,但在那里找不到相关帮助)