Преобразование значения строки в переменную KeyValuePair<TKey, TValue>
Я делал что-то вроде этого:
foreach( KeyValuePair<int,SOME_CLASS> reader in _readerDict )
{
var selectedReader = reader;
var antenna1 = selectedReader.Value.Antenna1IsEnabled;
var antenna2 = selectedReader.Value.Antenna2IsEnabled;
var antenna3 = selectedReader.Value.Antenna3IsEnabled;
var antenna4 = selectedReader.Value.Antenna4IsEnabled;
}
Но опять же я хочу сделать что-то вроде следующего:
foreach( KeyValuePair<int,SOME_CLASS> reader in _readerDict )
{
var selectedReader = reader;
for( var idx = 1; idx <= 4; idx++ )
{
var antennaIsEnabled = string.Format( "selectedReader.Value.Antenna{0}IsEnabled", idx );
// cast the value of antennaIsEnabled as a KeyValuePair<int,SOME_CLASS> variable datatype here
....
}
}
Могу ли я в любом случае преобразовать значение антенны IsEnabled в тип данных переменной KeyValuePair?
3 ответа
Решение
Похоже, вы хотите результат, который выглядит следующим образом:
Dictionary<int, bool> AntennaIsEnabled = new Dictionary<int, bool>();
foreach( KeyValuePair<int,SOME_CLASS> reader in _readerDict )
{
var selectedReader = reader;
//From your example
AntennaIsEnabled.Add(1, selectedReader.Value.Antenna1IsEnabled);
AntennaIsEnabled.Add(2, selectedReader.Value.Antenna2IsEnabled);
AntennaIsEnabled.Add(3, selectedReader.Value.Antenna3IsEnabled);
AntennaIsEnabled.Add(4, selectedReader.Value.Antenna4IsEnabled);
}
Затем вы можете получить доступ к состоянию каждой антенны, используя синтаксис, такой как AntennaIsEnabled[2].
Я полагаю, вы хотите извлечь selectReader
в качестве ключа и AntennaIsEnabled
как ценность
string[] parts = strA.Split('.');
var list = new List<KeyValuePair<string, string>>();
list.Add(new KeyValuePair<string, string>(part[0], part[2]));
Нужно добавить некоторые проверки ошибок...
Попробуйте использовать библиотеку FastMember для доступа к своим свойствам в виде строк.