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
Oop 将数据分为类、时间、过程_Oop_Class_Orm - Fatal编程技术网

Oop 将数据分为类、时间、过程

Oop 将数据分为类、时间、过程,oop,class,orm,Oop,Class,Orm,我有一个关于风格/好代码的问题。这是其中一个“因为它起作用而不那么重要”的事情,但我还是希望社区能提供一些见解。我是C#但是这种方法可以应用于任何面向对象编程 所以我有一个类,它本质上是一个数据容器。我将类传递给数据库,而不是传递10个参数。数据库编写类将每个数据成员放入其各自的SQL参数中,并执行数据库中的存储过程 我的问题是,当我在类中收集数据时,我将所有数据都附加到更改事件中。像 private void chkIce_CheckedChanged(object sender, Event

我有一个关于风格/好代码的问题。这是其中一个“因为它起作用而不那么重要”的事情,但我还是希望社区能提供一些见解。我是C#但是这种方法可以应用于任何面向对象编程

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

我的问题是,当我在类中收集数据时,我将所有数据都附加到更改事件中。像

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);

    }


这将根据用户的选择将my类的ice值设置为true/false。或设置文本。这非常简单,但是有一点代码开销,因为每个控件都有它自己的事件(同时,在发送方行上的强制转换可能有些过分)。另一种方法是在提交时收集所有数据。那就把它全部放在课堂上吧。还有一种叫做实体框架和ORM的东西,但我目前还停留在.NET3.5(我们与时代同步)中,我读到了4.0才适用。我还没有真正阅读过是否有一个标准,它似乎比任何东西都更倾向于偏好。那么,堆叠超人的同胞们……你们的想法是什么

因为看起来像是在一个带有post back的网页中,所以我认为更容易使用submit按钮处理程序函数来实例化对象,并手动将每个属性设置为其对应的UI元素的值。在每个事件处理程序上进行数据设置(更改选择、调出焦点等)需要重新加载整个页面。(然后,您将不得不在这些post-back上持久化该对象——这是一项乏味且容易出错的壮举,尽管是可行的。)

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


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

进行讨论!我需要把我的表格数据输入我的课堂。我有选择1。所有控件的onChange将其放在那里或2。使用提交按钮收集数据。第二个选项是正确的,因为它工作得更快
    private void txtTrailer_TextChanged(object sender, EventArgs e)
    {
        TextBox txt = (TextBox)sender;
        newRecord.TrailerNumber = txt.Text.ToString();
    }