c# - 方法依赖 - 最佳实践?

标签 c# .net oop dependencies

处理方法执行所依赖的属性的最佳方法是什么?

假设您有一个具有 2 个属性的类和一个使用这 2 个属性执行某些操作的方法。实例化类,设置属性,然后执行方法(不带参数)会更好吗?还是实例化类,然后执行方法,传入将设置属性的参数?

例如:

class Person ...
    string Name ...
    string Address ...
    void Save() {
        Database.SavePerson(this.Name, this.Address);
    }

--- 或 ---

class Person ...
        string Name ...
        string Address ...
        void Save(string name, string address) {
            this.Name = name;
            this.Address = address;
            Database.SavePerson(this.Name, this.Address);
        }

在第一个示例中,如果在调用 Save 方法之前尚未设置名称和地址,您将收到错误消息。因此,您似乎必须验证这些属性是否已在方法中设置。

第二个示例强制用户提供执行该方法所需的数据。但是,这似乎有点多余,因为传入的参数已经是对象的属性。

是否有“最佳”方法来做到这一点?

提前致谢。

最佳答案

首先我会考虑让实体负责其自身的持久性是否是您想要的设计。

如果不是,则 Person 实体将公开属性,而另一种类型将负责保存该 Person 实体(如果使用类似例如 Repository 模式)。

如果实体负责持久化自身(如果您使用丰富的域模型,例如与 CSLA 等框架一起使用的模型,就会出现这种情况),那么您将只有一个无参数的Save 方法,如果属性是必需的,那么某种形式的验证框架将捕获任何缺失的要求。

关于c# - 方法依赖 - 最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12962910/

相关文章:

java - 当类型的实现不再有效时该怎么办?

c# - 执行读取器 : Connection property has not been initialized error issue

c# - 无法使用 Autofac 解析 NameValueCollection

c# - 单击 jqGrid 中的一行获取列的值

.net - .NET 中的神经网络示例

.net - 使用 Slow Cheetah 转换 Nuspec 文件

c++ - 该类有多少个构造函数?

C#/DDD : How to model entities with internal state objects not instantiable by the domain layer when using onion architecture?

C# 自动属性

c# - 我们可以在 Web 应用程序中添加对多个 .svc 文件的单一引用吗