Obtenha o nome e o tipo da propriedade passando-o diretamente

Eu fiz perguntas semelhantesAqui EAqui

Este é um tipo de amostra:

<code>    public class Product {

    public string Name { get; set; }
    public string Title { get; set; }
    public string Category { get; set; }
    public bool IsAllowed { get; set; }

}
</code>

E eu tenho uma classe genérica que precisa de propriedades para gerar alguns códigos HTML:

<code>public class Generator<T> {

    public T MainType { get; set; }
    public List<string> SelectedProperties { get; set; }

    public string Generate() {

        Dictionary<string, PropertyInfo> props;
        props = typeof(T)
                .GetProperties()
                .ToDictionary<PropertyInfo, string>(prop => prop.Name);

        Type propType = null;
        string propName = "";
        foreach(string item in SelectedProperties) {
            if(props.Keys.Contains(item)) {
                propType = props[item].PropertyType;
                propName = item;

                // Generate Html by propName & propType
            }
        }
</code>

E eu uso esses tipos da seguinte forma:

<code>Product pr = new Product();
Generator<Product> GT = new Generator<Product>();
GT.MainType = pr;
GT.SelectedProperties = new List<string> { "Title", "IsAllowed" };

GT.Generate();
</code>

Então eu acho que esse processo deveria ser mais fácil como é mas não sei como implementá-lo, acho que passar propriedades para o gerador mais simples, algo como o seguinte Pseudo-código:

<code>GT.SelectedProperties.Add(pr.Title);
GT.SelectedProperties.Add(pr.IsAllowed);
</code>

Eu não sei se isso é possível ou não, eu preciso apenas de duas coisas 1-PropertyName como:IsAllowed 2- tipo de propriedade como:bool. Talvez não precise passarMainType Eu uso-o para obter tipos de propriedade, por isso, se eu puder lidar como o acima, não precisa mais dele.

Qual é a sua sugestão para implementar algo assim?

Existe alguma maneira melhor de fazer isso?

Atualizar

ComoArsenMkrt disse que encontrei pode usarMemberExpression mas eu não consigo obter o tipo de propriedade, vejo o tipo de propriedade na depuração ver a imagem:

Então, como posso obter o tipo de propriedade?

Eu encontreiAqui.

questionAnswers(1)

yourAnswerToTheQuestion