Помните, что статические значения элементов существуют в конкретном .NET домене приложения , а домены приложений существуют в конкретном процессе операционной системы.
Учитывая, что сервер и клиент - это разные процессы операционной системы и, возможно, даже разные машины, как упоминал Адам, невозможно, чтобы значение, которое вы имели на сервере, автоматически передавалось клиенту без вас написание некоторого кода.
Я думаю, что, возможно, существует неправильное представление - сериализация не упаковывает экземпляр и его статические элементы на сервере, а отправляет его клиенту. Он извлекает значения элементов, которые он считает сериализуемыми (например, элементы, помеченные [DataMember]
или элементами экземпляра, но не статические элементы), и отправляет клиенту только эти значения.
Следовательно, значение на клиенте будет таким же, как значение на сервере, которое было до того, как вы установили его на значение, которое вы теперь ожидаете увидеть на клиенте.
Однако: Я заметил, что вы также упоминаете, что видите, что ваша коллекция имеет значение null
.
Если вы используете DataContractSerializer в среде PartialTrust
, учтите, что он может не вызывать конструктор вашего класса.
Цитата:
При создании экземпляра целевого объекта во время десериализации DataContractSerializer не вызывает конструктор целевого объекта.
Если эта коллекция была создана вашим конструктором, это может объяснить, почему вы видите null
.