Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

ToString() todas as propriedades da classe

Olá

Concluindo o C# parte 6 fiquei pensando se seria possível no tostring, gerar uma string com todas as propriedades da classe, então eu poderia comparar as strings geradas pela classe e a gerado a partir do argumento e ver se são iguais,,,

Sei que talvez não seja o meio ideal, mas para efeito de aprendizado, gostaria de criar uma classe que recebe um objeto e faz um "ToXML", retornando o resultado como string,, assim quando eu sobrescrever o tostring da classe cliente eu gero esse XML e uso para comparar!

Existe algum pacote no nuget que gera um XML de um objeto de forma dinâmica? Ou poderiam me passar umas dicas de como fazer isso?

Obrigado,

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Você pode utilizar as classes que estão no namespace System.Xml.Serialization.

Em vez de sobrescrever o método ToString(), eu sugiro criar um extension method generico ToXml(). Assim você mantem o comportamento do ToString() e adiciona uma nova função ao seu código, sem abrir mão de outra.

Um exemplo disso seria o código abaixo.

public static string ToXml<T>(this T value)
{
            if (value == null) return string.Empty;

            var settings = new XmlWriterSettings();
            var serializer = new XmlSerializer(typeof(T));

            using (StringWriter stringWriter = new Utf8StringWriter())
            using (var xmlWriter = XmlWriter.Create(stringWriter, settings))
            {
                serializer.Serialize(xmlWriter, value, SerializerNamespaces);
                return stringWriter.ToString();
            }
}