Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 域层中类的作用域_C#_Oop_Domain Driven Design_Encapsulation_Single Responsibility Principle - Fatal编程技术网

C# 域层中类的作用域

C# 域层中类的作用域,c#,oop,domain-driven-design,encapsulation,single-responsibility-principle,C#,Oop,Domain Driven Design,Encapsulation,Single Responsibility Principle,在我的域层中,我有一个名为“Client”的类。通常我只会在类中创建与该客户机直接相关的属性,例如-‘Firstname’、‘Lastname’、‘Address’等。。以及与客户相关的方法 我的问题是,在这个类中添加一个对客户机集合执行工作的方法会被认为是糟糕的OO设计吗 例如,假设我想在客户机上执行一个操作,例如更新他们的电子邮件地址。在执行此操作之前,我希望确保没有其他客户机具有相同的电子邮件地址,因此我在客户机类之外创建了一个名为ValidateEmail(string emailAdd

在我的域层中,我有一个名为“Client”的类。通常我只会在类中创建与该客户机直接相关的属性,例如-‘Firstname’、‘Lastname’、‘Address’等。。以及与客户相关的方法

我的问题是,在这个类中添加一个对客户机集合执行工作的方法会被认为是糟糕的OO设计吗

例如,假设我想在客户机上执行一个操作,例如更新他们的电子邮件地址。在执行此操作之前,我希望确保没有其他客户机具有相同的电子邮件地址,因此我在客户机类之外创建了一个名为ValidateEmail(string emailAddress)的方法

在该方法中,查询具有该电子邮件地址的任何现有客户机的客户机存储库,并返回布尔值

这会被认为是糟糕的OO设计吗?我宁愿不必创建任何其他类,也不必用这种验证填充UI层控制器逻辑,它似乎适合客户机类,但它感觉在同级上执行操作并不完全正确


谢谢

如果是我,我会上一堂客户收集课。不管怎么说,除了名字,你几乎都有这个,所以我不认为这有什么大不了的

作为该类的一部分,我可能有一个名为GetClientsWithEmail的方法,该方法返回具有特定电子邮件地址的客户端列表。通过这样做,这个方法纯粹是一个查找,不包含任何业务逻辑。事实上,我可以想象在这里有一行linq


当有人试图更新客户端的电子邮件地址时,您将获得一些验证代码。这可能是客户机类的一部分,也可能不是(您指出它是,但当然不必是)。无论如何,此验证代码可以调用ClientCollection.GetClientsWithEmail方法,并测试返回的客户端对象数是否为零

什么是客户端的存储库?简单列表或自定义可枚举集合?它将是IQueryable