我正在尝试获取类型为bool的所有属性的名称和值,似乎可以正常工作,但获取的值错误。
这是我正在使用的代码:
signupItem.GetType().GetProperties()
.Where(p => p.PropertyType == typeof(bool) && (bool) p.GetValue(signupItem, null))
.Select(p => p.Name).ToList().ForEach(prop => {
var value = (Boolean) signupItem.GetType()
.GetProperty(prop).GetValue(signupItem, null);
html = (value) ?
html.Replace("{chkbox}", "<input type='checkbox' id='html' checked>") :
html.Replace("{chkbox}", "<input type='checkbox' id='html'>");
});
但是在尝试将其分配给变量时显示为false。
任何帮助将不胜感激。
答案 0 :(得分:3)
.ForEach()
html
值,因此第一个循环将替换所有{chkbox}
值。尝试一下:
var properties = signupItem.GetType()
.GetProperties()
.Where(p => p.PropertyType == typeof(bool)
&& (bool) p.GetValue(signupItem, null));
foreach (Property prop in properties) {
// don't you already know this is true from the `Where` clause?
var value = (Boolean) prop.GetValue(signupItem, null);
// this only happens for the first item - for all other items "{chkbox}" will already be replaced.
html = (value) ?
html.Replace("{chkbox}", "<input type='checkbox' id='html' checked>") :
html.Replace("{chkbox}", "<input type='checkbox' id='html'>");
}