0

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?

J. Steen
  • 15,470
  • 15
  • 56
  • 63
Khairul
  • 191
  • 2
  • 14
  • KeyValuePair needs 2 parts, the key and the value. Your string will be splitted then? Key = "selectedReader" and Value = "AntennaIsEnabled" – Fabio Nov 30 '12 at 12:26
  • I think he has a string that contains "string strA = ..." and he wants to make this a dictionary, so the key word be "strA" and the value would be "selectedReader.Value.AnetnnaIsEnabled". – Thorsten Dittmar Nov 30 '12 at 12:28
  • Sorry guys, I just edited the question to be more precise. – Khairul Nov 30 '12 at 12:36

3 Answers3

2

I suppose you want to extract the selectReader as key and AntennaIsEnabled as value

string[] parts = strA.Split('.');
var list = new List<KeyValuePair<string, string>>();
list.Add(new KeyValuePair<string, string>(part[0], part[2]));

Need to add some error checking...

Steve
  • 213,761
  • 22
  • 232
  • 286
0

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

user15741
  • 1,392
  • 16
  • 27
0

Try using FastMember library to access your properties as strings.

Jakub Konecki
  • 45,581
  • 7
  • 87
  • 126