Во-первых, обратите внимание, что сериализация XML в NServiceBus - это не то же самое, что сериализация .NET XML. Вариант .NET - это возможность адаптировать полученный XML с атрибутами для создания определенных схем XML, потенциально для взаимодействия с другими языками. Сериализатор NServiceBus XML представляет собой чрезвычайно малое подмножество функций, предназначенных для максимально эффективной передачи предопределенных схем сообщений в XML и из XML.
Хотя результат сериализации NServiceBus читабелен (что очень удобно при проверке очередей ошибок), он не поддерживает все типы или все параметры форматирования. Он делает то, что делает, и делает это очень хорошо.
Тем не менее, проблема с IEnumerable заключается в том, что в нем может быть так много вещей. В действительности это может быть просто массив, но это может быть и сложное выражение Linq-to-SQL, которое вызовет запрос к базе данных. Чтобы сериализовать IEnumerable, вам все равно придется представлять его как коллекцию (список или массив), поэтому вы должны перечислять элементы. Когда именно ты это сделаешь? Какие проблемы с транзакциями могут возникнуть? Вот почему не заботит производительность XML-сериализатор NServiceBus.
Сообщение NServiceBus - это просто контракт на передачу данных сообщения. Я бы предложил просто использовать массив. Достаточно просто преобразовать IEnumerable в массив (с помощью метода расширения ToArray ()) и обратно (с помощью метода расширения AsEnumerable ()), так почему важно иметь его как IEnumerable?
Чтобы полностью ответить на ваш вопрос, можно иметь возможность заменить сериализатор, написав собственный класс, который реализует IMessageSerializer, и сконфигурировать инфраструктуру внедрения зависимостей для его использования, но я сам не пробовал этого. Это было бы довольно непросто, поскольку каждая конечная точка должна была бы использовать один и тот же сериализатор, и вам также пришлось бы вносить изменения, чтобы использовать Distributor, TimeoutManager, Gateway и т. Д.
Редактировать: Заметил, что этот вопрос был перекрестно опубликован в группе NSB на http://tech.groups.yahoo.com/group/nservicebus/message/8838