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