Использование ReadOnlyCollection не позволяет мне установить двунаправленное отношение «многие ко многим» - PullRequest
1 голос
/ 02 апреля 2010

Я использую NHibernate, чтобы сохранить связь «многие ко многим» между пользователями и сетями. Я настроил класс User и Network следующим образом, выставляя каждую коллекцию как ReadOnlyCollections для предотвращения прямого доступа к базовым спискам. Я пытаюсь убедиться, что единственный способ добавить пользователя в сеть - это использовать функцию «JoinNetwork». Однако я не могу понять, как добавить пользователя в список пользователей сети, поскольку ее коллекция доступна только для чтения.

public class User    
{
    private ISet<Network> _Networks = new HashedSet<Network>();
    public ReadOnlyCollection<Network> Networks
    {
        get
        {
            return new List<Network>(_Networks).AsReadOnly();
        }
    }

    public void JoinNetwork(Network network)
    {
        _Networks.Add(network);

        // How do I add the current user to the Network's list of users?
    }
}

public class Network
{
    private ISet<User> _Users = new HashedSet<User>();
    public ReadOnlyCollection<User> Users
    {
        get
        {
            return new List<User>(_Users).AsReadOnly();
        }
    }
}

1 Ответ

2 голосов
/ 02 апреля 2010

Вам нужно будет добавить какой-нибудь способ доступа к не доступной только для чтения коллекции в сети извне класса. Например, вы можете добавить к нему публичный метод AddUser. Если вы действительно не хотите, чтобы кто-то имел к нему доступ, кроме вас, вы можете использовать внутренний метод / свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...