WCF, контейнеры в DataContract
-
22-07-2019 - |
Вопрос
Мне нужно передать некоторый контейнер объектов в вызов WCF
[DataContract]
class Foo
{
// other fields omited
[DataMember]
public List<Foo> MyList;
}
Это нормально для сериализации? Если нет, какие у меня варианты?
Решение
Это нормально, но результирующий тип будет массивом, а не списком. Я неравнодушен к использованию массива в контракте просто для того, чтобы убедиться, что я не пытаюсь использовать его в качестве списка в другом месте.
Другие советы
Он успешно десериализуется, даже если вы не примените DataContract. Единственное условие - все используемые в сериализации типы имеют конструктор без параметров (даже закрытый), например:
List<T> - already has it.
Foo - have it by default.
Не связан с StackOverflow