Сериализация и десериализация с .NET - PullRequest
1 голос
/ 01 октября 2010

В настоящее время я обсуждаю с несколькими друзьями, как создавать легко сериализуемые и десериализуемые классы. В настоящее время мы используем «доморощенную» попытку, включающую множество жутких интерфейсов, пользовательских атрибутов и загрузок отражений, которые к настоящему времени переросли расширение, для которого оно было разработано. Поэтому мы ищем альтернативы. Желательно зрелые каркасы уже в качестве продукции. Но пока мы не смогли найти ничего, что соответствовало бы нашим потребностям.

Наша нынешняя система предоставляет следующие функции:

  • Он использует XML, который не является жизненно важным. Но : контент должен быть удобочитаемым и создавать "хорошие" различия при использовании его в контексте VCS. Поэтому я думаю, что XML разумен.
  • Работает с Silverlight, XNA и «нормальным» .NET Framework. В настоящее время мы используем только «нормальную» платформу .NET, но не хотели бы сокращать Silverlight. XNA - это бонус, но не слишком строгий.
  • Он поддерживает «частичную» десериализацию, когда он в основном загружает только подмножество свойств наших ресурсов. Это не является строго обязательным, но значительно ускоряет время загрузки, поскольку ресурсы могут загружаться «по требованию».

Мы знаем, что особенно последнее требование немного необычно, но, может быть, нам повезло, и кто-то знает достойную структуру? Мы также хотели бы услышать о фреймворках, которые не совсем соответствуют нашим требованиям, и за пределами стандартной библиотеки .NET, так как мы не могли найти много.

Ответы [ 2 ]

1 голос
/ 01 октября 2010

Вы пытались использовать классы XmlSerializer или BinaryFormatter (и связанные с ними)?

Большинство вещей можно безболезненно сериализовать и десериализовать, используя любой из этих двух, и во многих случаях, даже если есть что-то, препятствующее сериализации с использованием этих классов (например, циклические ссылки), довольно легко обойти, используя сериализацию атрибуты или, в крайнем случае, путем реализации IXmlSerializable и ISerializable .

Механизмы сериализации .Net невероятно универсальны - ваши объекты должны быть особенными, прежде чем вы исключите стандартные методы сериализации .Net.

1 голос
/ 01 октября 2010

Вы можете попробовать сериализовать его с System.Xml и XmlSerializer, а затем использовать System.Xml.Linq и XDocument для частичной десериализации в .NET 3.5. Возможно, вам нужны другие подходы в Silverlight и XNA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...