Вопрос

Мне нужно передать некоторый контейнер объектов в вызов WCF

[DataContract]
class Foo
{
 // other fields omited

 [DataMember]
 public List<Foo> MyList;
}

Это нормально для сериализации? Если нет, какие у меня варианты?

Это было полезно?

Решение

Это нормально, но результирующий тип будет массивом, а не списком. Я неравнодушен к использованию массива в контракте просто для того, чтобы убедиться, что я не пытаюсь использовать его в качестве списка в другом месте.

Другие советы

Он успешно десериализуется, даже если вы не примените DataContract. Единственное условие - все используемые в сериализации типы имеют конструктор без параметров (даже закрытый), например:

List<T> - already has it.
Foo - have it by default.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top