Я довольно новичок в 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;
}