我正在使用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();
}
}
}
答案 0 :(得分:2)
您需要添加一些从类外部访问Network中非读取集合的方法。例如,您可以向其添加公共AddUser方法。如果您真的不希望任何人访问您,您可以使用内部方法/属性。