在列表中的按索引分类中设置属性值

时间:2019-07-02 23:21:05

标签: c#

嘿,我正在尝试将值设置为我拥有的某个类中列表中的项目

我知道属性名称及其类型为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);
        }
    }

1 个答案:

答案 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);
    }
}