Совместное использование переменных между объектами / свойствами класса - PullRequest
0 голосов
/ 30 марта 2019

Итак, у меня есть объект "мир", который содержит список "плиток". У меня также есть «островные» объекты, которые содержат определенные «плитки» из списка «мировых» объектов «плитки». Для внешних целей я хочу сохранить мир и остров как объекты / классы.

Я хочу иметь возможность изменять значения плиток в списке в мире и чтобы эти изменения наблюдались в классе плиток и наоборот.

В основном я хочу:

class World {
    List<Tile> tiles;
}

class Islands {
    // ref here is not syntax
    List<ref Tile> tiles;
}

Но ref не допускается в качестве аргумента типа в списке. Как-то я могу реализовать это поведение, сохраняя их как можно ближе к объектам / классам и не имея дублирующих плиток.

1 Ответ

1 голос
/ 31 марта 2019

Не на 100% ясно соответствует вашим требованиям. Но если вы хотите поделиться плитками, то ссылки World и Island автоматически увидят изменения в значениях этих плиток, потому что они совместно используют экземпляры (которые должны быть классами, а не структурами). Это пассивно хотя. Если вам нужно, чтобы что-то произошло при возникновении этих изменений (например, указав World или Island посмотреть и обратить внимание), то реализуйте событие, которое будет вызвано при изменении свойства.

Если вам нужна полная замена тайла и вы хотите наблюдать это изменение, тогда реализуйте слой косвенности; например, TileReference со свойством Tile. Когда это свойство изменяется, вы можете вызвать событие, и обработчик может наблюдать совершенно новую плитку.

...