我正在使用 C# 10,但在 .NET 6 和 HotChocolate 12.12.0 上禁用了可為空的參考型別。
我Query.cs的條目是這樣的:
public async Task<List<Foo>> GetFoos() { ... }
生成的 GraphQL 模式如下所示:(foos: [Foo]可空陣列和可空Foo項)
當我將[GraphQLNonNullType]屬性添加到GetFoos()方法中時,生成的 GraphQL 模式如下所示:(foos: [Foo!]!具有不可空項的不可空陣列Foo)
我希望我的架構看起來像這樣:(foos: [Foo!]具有不可為空項的可空陣列Foo)
根據我的發現(例如這個答案),這應該是可能的。
HotChocolate 是否提供了任何方法來生成一個可空陣列,其中包含架構中的不可空項?
uj5u.com熱心網友回復:
是的,這可以使用熱巧克力來實作。
使用基于注釋的方法:
[GraphQLType(typeof(ListType<NonNullType<ObjectType<Foo>>>))]
public async Task<List<Foo>> GetFoos() { ... }
使用代碼優先的方法:
descriptor
.Field("foos")
.Type<ListType<NonNullType<ObjectType<Foo>>>>();
https://chillicream.com/docs/hotchocolate/defining-a-schema/non-null/#explicit-nullability
uj5u.com熱心網友回復:
一種解決方案是啟用可為空的參考型別,然后將串列顯式標記為可為空。
在檔案中啟用可為空的參考型別.csproj:
<Nullable>enable</Nullable>
public async Task<List<Foo>?> GetFoos() { ... }
為了不為整個專案更改此設定(因為這可能會破壞某些內容),可空指令可用于僅在代碼的某些部分啟用此功能:
#nullable enable
public async Task<List<Foo>?> GetFoos() { ... }
#nullable disable
不要忘記再次禁用它,否則它也會影響下面的任何其他代碼。
雖然這暫時解決了我的問題,但如果有一個不啟用可空參考型別的解決方案,我仍然會感興趣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/509939.html
標籤:C#。网图形热可可
上一篇:只取字串中的字母并將它們反轉
下一篇:為什么小數精度文化依賴?
