Search code examples
c#typeconverterkeyvaluepair

Converting the value of a string to a variable of KeyValuePair<TKey,TValue>


I was doing something like this :

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;
}

But then again I want to do something like the following :

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
    ....
  }
}

Is there anyway for me to cast the value of antennaIsEnabled as a KeyValuePair variable datatype?


Solution

  • It sounds like you want a result that looks like this:

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

    Then you can access the state of each antenna by using a syntax like AntennaIsEnabled[2].