How to get a value using interpolation?

2

I'm trying to retrieve a value from a class by using tweening. Using Console.WriteLine($"Meu Nome é, {pessoa.Nome}"); , I get the value of the form I want, but in my case the string will come from a database configuration.

I tried to mount it as follows

string expressao = "Meu Nome é,  {pessoa.Nome}";

and call it that way

Console.WriteLine($"" + (expressao));

This prints the string

  

My Name is, {person.Name}

And that's not what I want. Is there any way to do this?

using System;

namespace Usando_Interpolacao
{
    class Program
    {
        static void Main(string[] args)
        {
            var pessoa = new Pessoa()
            {
                Documento = new Documento()
                {
                    Numero = 12345,
                    Tipo = "RG"
                },
                Idade = 20,
                Nome = "Papai Noel",
            };

            string expressao = "Meu Nome é,  {pessoa.Nome}";

            Console.WriteLine($"Meu Nome é,  {pessoa.Nome}"); // print --> Meu Nome é,  Papai Noel
            Console.WriteLine($"" + (expressao)); // print --> Meu Nome é,  {pessoa.Nome} .. Errado :(
            Console.ReadKey();
        }
    }

    public class Pessoa
    {
        public int Idade { get; set; }
        public string Nome { get; set; }
        public Documento Documento { get; set; }
    }

    public class Documento
    {
        public int Numero { get; set; }
        public string Tipo { get; set; }
    }
}
    
asked by anonymous 12.07.2018 / 13:51

1 answer

2

I was able to solve using Smart.Format , I do not know if it's a good library, but at the moment I get what I need .

var pessoa = new Pessoa()
{
    Documento = new Documento()
    {
        Numero = 12345,
        Tipo = "RG"
    },
    Idade = 20,
    Nome = "Papai Noel",
    Codigo = 1,
};

string expressao = "Pessoa/{Documento.Tipo}";
string texto = string.Empty;

texto = Smart.Format(expressao, pessoa);
Console.WriteLine(texto);
    
12.07.2018 / 15:18