.XmlSerializers.dll как его использовать - путают примеры через интернет - PullRequest
3 голосов
/ 11 мая 2011

Я довольно новичок в C #. Я начал использовать сгенерированный SGEN файл XmlSerializers.dll, и сейчас я в замешательстве. Несмотря на то, что я не могу найти ни одного настоящего пошагового руководства, как правильно его использовать, меня также смущают разные советы.

Я прочитал много статей SGEN и до сих пор не уверен, как использовать сгенерированную библиотеку lib в моем проекте.

Может ли кто-нибудь, кто имеет реальную практику кодирования с этим, объяснить мне раз и навсегда правильный способ его использования?

Я думал, что понял, как его использовать, но вчера я нашел этот урок: http://www.dotnetfunda.com/articles/article1105-optimized-way-of-xml-serialization-using-sgen-utility-.aspx

Парень добавил .XmlSerializers.dll в свой проект ссылки и использует такой код для сериализации:

static string SerializebySGEN()
{
  Person p = new Person();
  p.Age = 29;
  p.Name = "Satya Narayan Sahoo";
  StringBuilder buildr = new StringBuilder();
  StringWriter writr = new System.IO.StringWriter(buildr);
  PersonSerializer mySerialzer = new PersonSerializer();
  mySerialzer.Serialize(writr, p);
  string str = writr.ToString();
  return str;
}

PersonSerializer mySerialzer = новый PersonSerializer ();

но в прошлом о стековом потоке кто-то писал на мой другой вопрос, связанный с XmlSerializer:

Добавление ссылки не обязательно, XML-сериализация всегда пытается Assembly.Load () на Сборка .XmlSerializers.dll в любом случае. > Кроме того, вы никогда не будете ссылаться на сгенерированный XmlSerializationWriterXxx и классы XmlSerializationReaderXxx прямо в вашем коде.

Так кто же прав? Может ли кто-нибудь из практикующих сказать мне, как мне использовать эту сгенерированную библиотеку SGEN с моим проектом и кодом? Я действительно хочу использовать это хорошим способом! :)

Редактировать: или, может быть, я что-то неправильно понял в цитируемых статьях, и оба человека имеют право? Я потерян:)

Edit2: я написал ниже метод для десериализации одного из моих сериализуемых классов (MySerializableClass), и я использую сгенерированный SGEN класс MySerializableClassSerializer. Это нормально? (Я так думаю, плз подтвердить;))

        /// <summary>
        /// Deserializes the specified XML source into object using SGEN generated class.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="xmlSource">The XML source.</param>
        /// <param name="isFile">if set to <c>true</c> the the source is a text File else it is a XML String.</param>
        /// <returns>Return object with deserialized XML</returns>
        public static MySerializableClass MySerializableClassSgenDeserialize(string xmlSource, bool isFile = true)
        {
            MySerializableClass data = new MySerializableClass();

            if (isFile)
            {
                using (TextReader textReader = new StreamReader(xmlSource))
                {
                    MySerializableClassSerializer xSerializer = new MySerializableClassSerializer();
                    data = (MySerializableClass)xSerializer.Deserialize(textReader);
                }
            }
            else
            {
                using (StringReader xmlText = new StringReader(xmlSource))
                {
                    MySerializableClassSerializer xSerializer = new MySerializableClassSerializer();
                    data = (MySerializableClass)xSerializer.Deserialize(xmlText);
                }
            }

            return data;
        }

1 Ответ

0 голосов
/ 11 мая 2011

«Добавление ссылки не обязательно» означает именно это - не обязательно.

Есть причины добавлять сборки (и другие файлы) в ваш проект, даже если вы не планируете ссылаться на них. То есть если вы хотите создать проект установки или опубликовать решение, вы хотите, чтобы все файлы, которые нужно развернуть, были связаны с решением, даже если некоторые из них не используются непосредственно кодом.

Лично я бы не рекомендовал слишком углубляться в эту тему в качестве начального опыта обучения - как правило, сборки, созданные во время выполнения, работают для большинства сценариев.

...