嘿,我正在尝试将值设置为我拥有的某个类中列表中的项目
我知道属性名称及其类型为bool
我尝试过
并且我正在接收此错误
System.Reflection.TargetException
我做错了什么? 谢谢指教
public partial class Users
{
public List<Member> Members { get; set; } = new List<Member>();
}
public partial class SellerSettings
{
public bool MyProp { get; set; };
}
我尝试了什么
状态始终为1或0,可以转换为bool
public async void ChangeStatus(int userId, string column, int status)
{
var propInfo = Users.Members[Users.Members.FindIndex(c => c.Id == userId)].SellerSettings.GetType()
.GetProperty(column);
if (propInfo != null)
{
propInfo.SetValue(column, Convert.ToBoolean(status), null);
}
}
答案 0 :(得分:1)
SetValue的第一个参数不是属性的名称(属性名称已由对propInfo的引用隐式指定)。第一个参数应该是实现propInfo的类的实例。从您的示例中不确定,但它可能应该是SellerSettings
的实例,如下所示:
public async void ChangeStatus(int userId, string column, int status)
{
var member = Users.Members[Users.Members.FindIndex(c => c.Id == userId)];
var settings = member.SellerSettings;
var propInfo = settings.GetType().GetProperty(column);
if (propInfo != null)
{
propInfo.SetValue(settings, Convert.ToBoolean(status), null);
}
}