基于特定构造函数调用特定方法

时间:2016-10-24 17:25:13

标签: c# wpf

我想要使用单个表单保存新记录和更新现有记录 但有两个构造函数(一个有参数,另一个没有)。调用的构造函数应确定应调用哪个方法(保存或更新)。

public ManageRecord(Record record ){ //update  record     }

public ManageRecord(){ //save new record     }

private void Save_Click(object sender, RoutedEventArgs e){
    //if default constructor invokes form call save method
    SaveMethod();
    //if constructor with parameters invokes form call update method
    UpdateMethod(record);
}

我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

我过去为解决此问题而做的是将模型上的主键字段作为Nullable字段。当您尝试保存记录时,只需查看模型上的字段,如果MyPk.HasValue返回true,那么您正在更新记录,如果是false,则表示您正在插入新记录。

当您调用采用模型实例的构造函数时,只需将其保存在本地字段中即可。当调用没有模型的构造函数时,使用null PK创建一个新的模型实例,并将其保存在本地字段中。 Save可以检查本地字段。

因此,最后,您的操作不是直接基于调用的构造函数,而是应该基于您当前使用的模型的状态。

答案 1 :(得分:0)

您只需在构造函数中设置一个布尔值即可。

private readonly bool _isNewEntity;

public ManageRecord()
{
    _isNewEntity = true;
    // Same as existing, _record = new Record() ?
}

public ManageRecord(Record record)
{
    _isNewEntity = false;
    // Same as existing, _record = record ?
}

private void Save_Click(object sender, RoutedEventArgs e)
{
    if (_isNewEntity)
        SaveMethod();
    else
        UpdateMethod(record);
}