NHibernate: использование IEnumerable в качестве типа коллекции приводит к ошибке - PullRequest
1 голос
/ 27 октября 2010

У меня есть класс, который использует ISet в качестве типа коллекции, как показано ниже:

  public class Client
  {
    private ISet<Contact> _contacts = new HashedSet<Contact>();
    public virtual ISet<Contact> Contacts { get { return _contacts; } }
  }

Я не хочу, чтобы сама коллекция могла изменяться извне. Однако, если я изменю тип свойства на IEnumerable, как показано ниже:

  public class Client
  {
    private ISet<Contact> _contacts = new HashedSet<Contact>();
    public virtual IEnumerable<Contact> Contacts { get { return _contacts; } }
  }

Тогда всякий раз, когда я пытаюсь использовать этот класс, я получаю ошибку NHibernate:

System.

Что дает? Как сделать публичную версию коллекции доступной только для чтения?

NB. Я также пытался использовать ReadOnlyCollection и получал ту же ошибку.

1 Ответ

1 голос
/ 27 октября 2010

Вы, вероятно, используете автоматическое отображение Fluent, которое предполагает тип как Bag, а не Set на основе типа интерфейса.Вам придется переопределить его в этом случае.

IEnumerable<T> отлично работает при отображении вручную или с XML.

...