Hot Chocolate - 是否可以使用泛型实现我自己的对象类型?

Hot Chocolate - Is it possible to implement my own object type with generics?

我写了下面的对象类型class。

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.'

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

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

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

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