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