Получать события от бизнес-объектов - PullRequest
1 голос
/ 09 июня 2010

Как продолжать получать события даже с измененными ссылками?

В проекте у меня есть следующая связь между BO (бизнес-объектом) и GUI альтернативный текст http://lh5.ggpht.com/_1TPOP7DzY1E/TA9kkB1tNfI/AAAAAAAADOw/Myf_QBM3hS0/s800/Capture6.gif

Например, G может представлять графику с временными линиями, C кривой TimeLine, P - точками этой кривой и T временем, которое представляет каждую точку.

Каждый объект GUI связан с соответствующим объектом BO. Когда T изменяется GUI P захватывает событие Changed и меняет его местоположение.

Итак, когда G нужно изменить, он изменяет свои объекты внутренне, и в результате T изменяется, P перемещается, а GuiG визуально изменяется, все в порядке.

Но в этой архитектуре есть неудобство ... BO не следует создавать заново, потому что это нарушит связь между BO и GUIO.

В частности, GUI P всегда должен иметь одну и ту же ссылку на T.

Если в бизнес-логике я делаю, например, P1.T = new T(this.T + 10) GUI_P1 больше не будет перемещаться, поскольку ожидает события от ссылки на прежний объект P1.T, который больше не принадлежит P1.

Таким образом, решение состояло в том, чтобы всегда модифицировать существующие объекты, а не создавать их заново. Но тут есть другое неудобство: производительность.

Допустим, у меня есть готовый newC объект, который должен заменить старый. Вместо того, чтобы делать G1.C = newC, я должен сделать foreach T в foreach P в C заменить на T из P из newC.

Есть ли другой, более оптимальный способ сделать это?

...