2012-01-09 2 views
1

Время для моего первого вопроса! Я хочу сообщить, что я довольно любитель с программированием, и я, вероятно, не совсем понимаю термины, которые я собираюсь использовать.Дублирование объекта в списке <T>

Я делаю программу, которая принимает результаты Oracle Query и отображает их в DataGridView для манипуляций. Данные будут использоваться с программным обеспечением для наложения, и мне нужно иметь возможность «разбить» и «соединить» строки, чтобы сделать дубликаты.

Данные поступают из моего уровня обслуживания в виде общей коллекции, называемой CheckOrderLine, которая содержит 20+ объектов, содержащих все данные.

Я ищу способ взять текущую CheckOrderLine из моего источника связывания _bs и создать новую CheckOrderLine со всеми одинаковыми значениями. Я считаю, что это называется глубокой копией.

Я узнал, что я могу использовать следующий код для достижения своей цели, но я уверен, что есть лучший способ сделать это:

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

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

и так далее.

Итак, я думаю, мой вопрос таков: Есть ли способ выполнить итерацию через CheckOrderLine и установить значения для каждого свойства в моем новом объекте? Кроме того, есть что-то ужасно неправильное с направлением, в котором я возглавляю? Я видел, как в Интернете говорят о том, как использовать ICloneable в моем классе CheckOrderLine, но на этот раз это на мой взгляд.

EDIT: Был неправильный тег VS. И я исправил некоторые словарный запас.

ответ

2

Поздравляем с вашим первым проектом. Вы на правильном пути - от чистой «работает ли это», нет ничего плохого в том, как вы сейчас это делаете - просто скопируйте одно свойство за другим.

Профессиональные разработчики обычно (надеюсь) стараются разработать код «элегантным» способом. Элегантность в этом случае, вероятно, означает включение логики клонирования CheckOrderLine внутри класса CheckOrderLine (в качестве метода). Таким образом, если вы найдете другое место в своем приложении, где вам нужно клонировать эти вещи, вы можете вызвать ту же функцию, и любые исправления ошибок для этой функции улучшат оба места, в которых вы копируете класс. Для этого вам не нужно реализовывать интерфейс ICloneable - это в основном просто конвенция.

Вы также можете использовать метод Reflection для программной итерации по свойствам и копирования их на новый объект, но это, вероятно, сейчас над головой.

+0

Благодарим за информацию. Ведущий разработчик в моей компании проводит энергичные тренировки, чтобы помочь мне построить эту программу. Именно он реализовал надлежащий дизайн интерфейсов, чтобы программа (в основном) соответствовала строгим правилам кодирования. Я буду использовать это как хорошую возможность для работы с интерфейсами самостоятельно. – Logarr

Смежные вопросы