1

我的第一个问题时间到了!我想让大家知道我对编程非常业余,而且我可能并不完全理解我将要使用的术语。

我正在制作一个程序,该程序从 Oracle 查询中获取结果并将它们显示在 DataGridView 中以进行操作。数据将与拼版软件一起使用,我需要能够“拆分”和“连接”行以进行复制。

数据来自我的服务层,作为一个名为 CheckOrderLine 的通用集合,其中包含 20 多个包含所有提取数据的对象。

我正在寻找一种方法来从我的绑定源 _bs 中获取当前的 CheckOrderLine,并使用所有相同的值创建一个新的 CheckOrderLine。我相信这被称为深拷贝。

我了解到我可以使用以下代码来实现我的目标,但我确信有更好的方法来做到这一点:

    CheckOrderLine current = (CheckOrderLine)_bs.Current;
    CheckOrderLine cloned = new CheckOrderLine();

    cloned.OrderNumber = current.OrderNumber;
    cloned.Qty = current.Qty;

等等。

所以我想我的问题是:有没有办法遍历 CheckOrderLine 并为我的新对象中的每个属性设置值?另外,我前进的方向有什么可怕的错误吗?我在 Web 上看到过有关在我的 CheckOrderLine 类中使用 ICloneable 的事情,但现在这超出了我的想象。

编辑:有错误的 VS 标签。我修正了一些词汇。

4

1 回答 1

2

恭喜你的第一个项目。你走在正确的轨道上——从纯粹的“它是否有效”的角度来看,你现在的做法没有任何问题——只需复制一个又一个属性。

专业开发人员通常(希望)尝试以“优雅”的方式开发代码。在这种情况下,优雅可能意味着在 CheckOrderLine 类中包含用于克隆 CheckOrderLine 的逻辑作为方法)。这样,如果您在应用程序中发现需要克隆这些东西的另一个地方,您可以调用相同的函数,并且对该函数的任何错误修复都将改进您复制类的两个地方。你不需要实现 ICloneable 接口来做到这一点 - 它主要只是一个约定。

您还可以使用一种称为反射的技术以编程方式迭代属性并将它们复制到一个新对象,但现在这可能超出了您的想象。

于 2012-01-09T20:30:07.053 回答