using System.Collections.Generic;
static void Main(string[] args)
var bruno = new Pessoa(){
DataDeAquisicao = DateTime.Now,
MetodoUm("um texto qualquer", 43, false);
MetodoDois(43, 61, null, "brncesar@outlook.com");
Console.WriteLine(GetVarsAndValuesAsFlatStringFromObject(new { str="um texto qualquer", number=43, isAlternative=false }));
Console.WriteLine("\nPessoa:\n\t» "+ GetVarsAndValuesAsFlatStringFromObject(bruno, "\n\t» "));
public static string GetVarsAndValuesAsFlatStringFromObject(Object obj, string varsSeparator = " | ")
var lstParamsAndValues = new List<string>();
foreach (var propInfo in obj.GetType().GetProperties())
var propValue = propInfo.GetValue(obj, null);
case null : valueAsString = "[NULL]" ; break;
case string value: valueAsString = $"\"{value}\"" ; break;
case DateTime value: valueAsString = ((DateTime)value).ToString("yyyy-MM-ddTHH:mm:ss"); break;
default : valueAsString = propValue ; break;
lstParamsAndValues.Add($"{propInfo.Name}: {valueAsString}");
return string.Join(varsSeparator, lstParamsAndValues);
static void MetodoUm(string str, int number, bool isAlternative) {
var paramsAndValuesAsString = GetVarsAndValuesAsFlatStringFromObject(new { str, number, isAlternative });
Console.WriteLine($"MetodoUm >> Parameters:\n\t{paramsAndValuesAsString}\n");
static void MetodoDois(int age, int phoneNumberCodArea, string nickName, string email)
var paramsAndValuesAsString = GetVarsAndValuesAsFlatStringFromObject(new { age, phoneNumberCodArea, nickName, email });
Console.WriteLine($"MetodoUm >> Parameters:\n\t{paramsAndValuesAsString}\n");
public int Id { get; set; }
public Sexo Sexo { get; set; }
public string Nome { get; set; }
public DateTime DataDeAquisicao { get; set; }