向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。
谢谢
每次迭代都应该在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;
}
您需要将列表初始化移到循环中。