1

我编写了以下对象类型类。

public class ResponseType<T> : ObjectType<ResponseEntry<T>>
{
    protected override void Configure(IObjectTypeDescriptor<ResponseEntry<T>> descriptor)
    {
        descriptor.Name("Response");
    }
}

我想像这样使用它作为解析器定义中的最外层类型。

descriptor.Field<SharedResolvers>(r => r.GetObject1(default, default, default, default))
    .Type<ResponseType<ListType<Object1>>>()
    .Name("object1");

descriptor.Field<SharedResolvers>(r => r.GetObject2(default, default, default, default))
    .Type<ResponseType<ListType<Object2>>>()
    .Name("object2");

如果我只实现此代码,则此代码有效,object1但是一旦添加,object2我就会收到以下错误。

System.Collections.Generic.KeyNotFoundException: 'The given key 'HotChocolate.Configuration.RegisteredType' was not present in the dictionary.'

似乎声明两个相同类类型的解析器可能存在一些问题。是这样吗?如果是这样,我有什么选择?

4

1 回答 1

2

我能够通过将 设置descriptor.Name为基于的唯一值来解决问题T

descriptor.Name($"Response_{typeof(T).GetHashCode()}");

然后我意识到我真正的问题是我在定义这个名字。如果您不覆盖名称,它会根据类型定义自动提供一个唯一的名称/键。

于 2020-01-22T00:57:14.810 回答