NHibernate: Как делают меня XmlSerialize ISet <T>?

Данный:

Проблема:

  • Я, не может свойства XmlSerialize ISet.

Я получаю ошибки как следующее:

Не может сериализировать участника [пространство имен]. [объект]. [свойство] типа Iesi. Наборы. Универсальный. ISet '1 [[пространство имен]. [объект], [блок], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], потому что это - интерфейс.

  • Я свободно признаю: я очень плохо знаком с NHibernate.
    • Таким образом, я не знаю, каковы мои опции.
  • Я полагаю, что должен использовать набор в противоположность сумке, потому что мои наборы содержат уникальные объекты.
  • Когда я преобразовал свойства ISet в свойства HashedTable (т.е. реальный класс), я получил ошибки как следующее:

Необходимо реализовать средство доступа по умолчанию на Iesi. Наборы. Универсальный. HashedSet '1 [[пространство имен]. [объект], [блок], Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], потому что это наследовалось ICollection.

Мои вопросы:

  • Что я должен сделать для исправления этой ситуации?
    • Я должен реализовать средства доступа по умолчанию во всех моих классах объекта?
      • Если так, есть ли рекомендуемый шаблон для того, чтобы сделать так?

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

5
задан Jim G. 28 December 2009 в 01:40
поделиться

3 ответа

Попробуйте вместо этого воспользоваться DataContractSerializer. Это более ограничено, но позволит сериализовать больше.

Дэн Ригсби объясняет разницу между XMLSerializer и DataContractSerializer

Вот пример из одной из моих записей о stackoverflow:

public XDocument GetProductXML(Product product)
    {
        var serializer = new DataContractSerializer(typeof(Product));
        var document = new XDocument();

        using (var writer = document.CreateWriter())
        {
            serializer.WriteObject(writer, product);
            writer.Close();
        }

        return document;
    }
1
ответ дан 18 December 2019 в 13:15
поделиться

Вы никогда не сможете сериализовать интерфейс XML - только конкретный класс, реализующий интерфейс.

-

.
1
ответ дан 18 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: