Ошибка отражения при сериализации свойств

#c# #xml #serialization #reflection

#c# #xml #сериализация #отражение

Вопрос:

У меня проблемы с сериализацией свойств, которые являются классами, реализующими некоторый интерфейс.

 public class A : InterfaceA
{
    public A()
    {
    }
}

public interface InterfaceA
{

}

public class B
{
    public A PropertyA { get; set; }
}
  

Я знаю о проблеме, связанной с сериализацией интерфейсов и абстрактных классов. Но относится ли это также к свойствам, которые где-то реализуют интерфейс? Если бы это было так, вы также не смогли бы сериализовать идентификатор Guid.

Исключение: «Невозможно сериализовать свойство элемента типа InterfaceA, поскольку это интерфейс».

Комментарии:

1. Можете ли вы показать код, который вы используете для сериализации этого? (Я столкнулся с аналогичной проблемой с Newtonsoft. Json и смог решить ее, добавив некоторое пользовательское сопоставление).

2. @EJoshuaS Действительно, это можно было бы сделать с помощью пользовательского сопоставления. Дело в том, что я не хочу этого делать, потому что это огромный существующий проект, и реализация пользовательского сопоставления сделает его еще более сложным.

3. Я предположил, что это тоже добавит много сложностей, но на самом деле это было довольно просто в Newtonsoft и было довольно хорошо отделено от остальной системы. Я не уверен, какую библиотеку вы используете, или было бы так же просто реализовать что-то подобное в вашей текущей библиотеке, но это один из вариантов, на который стоит обратить внимание.