Uzyskaj nazwę właściwości i typ, przekazując ją bezpośrednio

Zadałem podobne pytaniatutaj Itutaj

To jest przykładowy typ:

<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>

Mam klasę generyczną, która potrzebuje właściwości do generowania niektórych kodów 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>

Używam tych typów w następujący sposób:

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

GT.Generate();
</code>

Myślę, że ten proces powinien być łatwiejszy, ale nie wiem, jak go wdrożyć, myślę, że przekazanie właściwości do generatora będzie prostsze, coś w rodzaju następujących pseudokodów:

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

Nie wiem, czy to możliwe, czy nie, potrzebuję tylko dwóch rzeczy: 1-PropertyName jak:IsAllowed 2- typ nieruchomości:bool. Może nie musi przejśćMainType Używam go, aby uzyskać typy nieruchomości, więc jeśli mogę sobie z tym poradzić, nie potrzebuję go więcej.

Jaka jest Twoja sugestia wdrożenia czegoś takiego?

Czy jest jakiś lepszy sposób na to?

Aktualizacja

Tak jakArsenMkrt powiedział, że znalazłem może użyćMemberExpression ale nie mogę uzyskać Typu właściwości, widzę typ właściwości podczas debugowania, zobacz obrazek:

Jak mogę uzyskać typ nieruchomości?

znalazłem totutaj.

questionAnswers(1)

yourAnswerToTheQuestion