1

我有一个风格/好的代码问题。这是那些“不那么重要,因为它正在工作”的事情之一,但我仍然想从社区中获得一些见解。我在 C# 中,但该方法可以适用于任何 OOP

所以我有一个类,它本质上是一个数据容器。我将类传递给数据库,而不是传递 10 个参数。数据库写入类将每个数据成员放入其各自的 SQL 参数中,并在我的数据库中执行存储过程。

我的问题是,当我将数据收集到课程中时,我将所有数据都附加到 Change 事件中。喜欢

private void chkIce_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox chk = (CheckBox)sender;

        if (chk.CheckState == CheckState.Checked)
            outTruck.setWeather(2, true);
        else
            outTruck.setWeather(2, false);

    }

    private void txtTrailer_TextChanged(object sender, EventArgs e)
    {
        TextBox txt = (TextBox)sender;
        newRecord.TrailerNumber = txt.Text.ToString();
    }

这会根据用户的选择将我的班级的冰值设置为真/假。或设置文本。这很简单,但是有一点代码开销,因为每个控件都有自己的事件(发送者行上的强制转换也可能是矫枉过正)。另一种方法是在提交时收集所有数据。然后把它全部放到课堂上。还有一些叫做实体框架和 ORM 的东西,但我目前停留在 .NET 3.5 中(我们与时俱进),我读过这在你到达 4.0 之前并不适用。如果有标准,我还没有真正阅读过,它似乎比任何东西都更偏好。那么,堆栈overlowieans 的同胞......你的想法是什么?

4

1 回答 1

0

由于看起来您在一个带有回发的网页中,因此我认为在您实例化对象的地方使用提交按钮处理程序函数并手动将每个属性设置为其相应 UI 元素的值会更容易。在每个事件处理程序上进行数据设置(选择更改、焦点移出等)将需要重新加载整个页面。(然后,您将不得不在这些回帖中保留该对象 - 尽管可行,但这是一项乏味且容易出错的壮举。)

即使在桌面项目中,我也会在提交按钮的事件处理程序中收集所有 UI 元素中的所有值来构建我的对象。

如果该 UI 元素中的状态更改将影响对象本身以外的其他内容,则您可能希望在某些 UI 元素上实现事件处理程序。例如,一个复选框可以确定用户是否能够提交 - 因为选中它可能会添加一个成本更高的功能,其中他们的订单总价格可能超过他们当前的余额。这是您检查提交按钮是否应该保持启用或禁用的时候。

于 2012-12-09T03:48:03.643 回答