我有一个DTO,它是通过从DynamoDB表中读取来填充的。说当前看起来像这样:
public class Item
{
public string Id { get; set; } // PK so technically cannot be null
public string Name { get; set; } // validation to prevent nulls but this doesn't stop database hacks
public string Description { get; set; } // can be null
}
有什么最佳实践可以解决这个问题?我宁愿避免使用非参数构造函数,因为它与Dynamo SDK(以及其他)中的ORM配合不好。
我写public string Id { get; set; } = "";
这本书似乎很奇怪,因为这永远不会发生,因为Id
它是PK,而且永远不会为null。""
即使以某种方式做了,会有什么用?
那么对此有什么最佳实践吗?
- 我是否应该将它们全部标记为
string?
说它们可以为null,即使有些绝对不能为null。 - 我应该初始化
Id
,并Name
用""
,因为他们应该永远是零,这表明意图,即使""
将永远不会被使用。 - 以上的一些组合
请注意:这是关于C#8 可为空的引用类型的信息。如果您不知道它们的最佳答案,那就不要回答。
= ""
,您可以= null!
用来初始化一个您永远不会有效的属性null
(当编译器无法知道该属性时)。如果Description
可以合法的话null
,应该宣布为string?
。另外,如果DTO的可空性检查比帮助更麻烦,则可以仅将类型包装在#nullable disable
/中#nullable restore
以仅为此类型关闭NRT。
#pragma warning disable CS8618
在文件顶部打一巴掌。