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,

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();
            }
}