gpt4 book ai didi

c# - 我应该将验证逻辑放在 POCO 中吗?

转载 作者:可可西里 更新时间:2023-11-01 08:47:36 24 4
gpt4 key购买 nike

假设我有一个像这样的 POCO:

public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

名字和姓氏不能为空。我应该添加这样的方法吗:

public List<Error> Validate()
{
var errors = new List<Error>();

if (String.IsNullOrEmpty(FirstName))
errors.Add(new Error("FirstName", "You must fill out first name."));
if (String.IsNullOrEmpty(LastName))
errors.Add(new Error("LastName", "You must fill out last name."));
}

其中 Error 是一个包含 NameValueDictionary 的结构。这是做事的好方法吗?我可能会看到存储库存在问题,有人试图保存此 POCO 而没有先通过 Validate() 运行它。

最佳答案

我不会。我的 POCO 倾向于根据其上下文进行不同的验证。 “我的 Person 对象必须在这个应用程序中有一个地址,但在另一个应用程序中它们只需要有一个电话号码”......是那种你想要关注并灵活处理的事情。

我是贫血领域模型的拥护者,因为我通常会重复使用相同的领域,但会根据上下文(甚至可能是同一应用程序的不同区域)分配不同的行为和验证。

在实现新功能时,我通常会查看我的类并问自己这个问题:这看起来像是这个类的职责,还是更适合具有不同职责集的类?我们将这种检查称为“特征羡慕”,它有效地帮助区分类关心和不关心的内容。

关于c# - 我应该将验证逻辑放在 POCO 中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1479765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com