向string和List()组成的字典中添加项

本文关键字:字典 添加 string List bool | 更新日期: 2023-09-27 17:50:58

我有一个问题,试图添加一组键的字符串和bool列表的字典,下面是我的代码:

    private Dictionary<string, List<bool>> _properties = new Dictionary<string, List<bool>>();
private void Getconfiguration(PropertyInfo[] properties, object vCapabilities, object fCapabilities, object mCapabilities, List<string> list, string capabilityPath)
        {
            var propertyValue = new List<bool>();
        foreach (var propertyInfo in properties)
        {
            var vValue = propertyInfo.GetValue(vCapabilities, null);
            var fValue = propertyInfo.GetValue(fCapabilities, null);
            var mValue = propertyInfo.GetValue(mCapabilities, null);
            var type = GetMemberType(propertyInfo);
            if (type != typeof(bool))
            {
                GetPropertiesForMembers(propertyInfo.PropertyType.GetProperties(), vValue, fValue, mValue, list, Path);
            }
            propertyValue.Add(vValue.ToBool());
            propertyValue.Add(fValue.ToBool());
            propertyValue.Add(mValue.ToBool());
            _properties.Add(propertyInfo.Name, propertyValue);
        }
        var test = _properties;
    }

我在我的值测试中得到的是一组名称,但propertyValue中的数字等于键的数量*3(键乘以3)
是否有一种方法可以删除重复,以便每个键只有三个值?
例如,如果我有5个密钥,那么每个密钥的propertyValue将是15,而不是3。

谢谢

向string和List<bool>()组成的字典中添加项

每次迭代都应该在foreach内部创建一个新的propertyValue实例!这应该可以工作:

private Dictionary<string, List<bool>> _properties = new Dictionary<string, List<bool>>();
private void Getconfiguration(PropertyInfo[] properties, object vCapabilities, object fCapabilities, object mCapabilities, List<string> list, string capabilityPath)
        {          
           foreach (var propertyInfo in properties)
           {
            var propertyValue = new List<bool>();
            var vValue = propertyInfo.GetValue(vCapabilities, null);
            var fValue = propertyInfo.GetValue(fCapabilities, null);
            var mValue = propertyInfo.GetValue(mCapabilities, null);
            var type = GetMemberType(propertyInfo);
            if (type != typeof(bool))
            {
                GetPropertiesForMembers(propertyInfo.PropertyType.GetProperties(), vValue, fValue, mValue, list, Path);
            }
            propertyValue.Add(vValue.ToBool());
            propertyValue.Add(fValue.ToBool());
            propertyValue.Add(mValue.ToBool());
            _properties.Add(propertyInfo.Name, propertyValue);
        }
        var test = _properties;
    }

您需要将列表初始化移到循环中。