Получить имя свойства и ввести его напрямую
Я задавал похожие вопросыВот А такжеВот
Это образец типа:
public class Product {
public string Name { get; set; }
public string Title { get; set; }
public string Category { get; set; }
public bool IsAllowed { get; set; }
}
И у меня есть класс Generic, которому нужны свойства для генерации некоторых HTML-кодов:
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
}
}
И я использую эти типы следующим образом:
Product pr = new Product();
Generator<Product> GT = new Generator<Product>();
GT.MainType = pr;
GT.SelectedProperties = new List<string> { "Title", "IsAllowed" };
GT.Generate();
Поэтому я думаю, что этот процесс должен быть более простым, как есть, но я не знаю, как его реализовать, я думаю, что передать свойства генератору проще, что-то вроде следующего псевдокода:
GT.SelectedProperties.Add(pr.Title);
GT.SelectedProperties.Add(pr.IsAllowed);
Я не знаю, возможно ли это или нет, мне нужны только две вещи, например 1-PropertyName:IsAllowed
2- тип собственности, как:bool
, Возможно, вам не нужно проходитьMainType
Я использую его для получения типов свойств, поэтому, если я могу справиться, как описано выше, он мне больше не нужен.
Каково ваше предложение реализовать нечто подобное?
Есть ли лучший способ сделать это?
Update
КакArsenMkrt
сказал, что нашел можно использоватьMemberExpression
но я не могу получить тип свойства, я вижу тип свойства при отладке, см. рисунок:
Итак, как я могу получить тип недвижимости?
я нашел этоВот.