2012-11-30 47 views
0

我在做這樣的事情:一個字符串的值轉換爲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 
    .... 
    } 
} 

有無論如何,我要將antennaIsEnabled的值作爲KeyValuePair變量的數據類型嗎?

+0

KeyValuePair需要2個部分,鍵和值。你的字符串將被拆分呢? Key =「selectedReader」和Value =「AntennaIsEnabled」 – Fabio

+0

我認爲他有一個字符串,其中包含「字符串strA = ...」,他希望將其作爲字典,因此關鍵字是「strA」,值將是「selectedReader.Value.AnetnnaIsEnabled」。 –

+0

對不起,我只是編輯了更精確的問題。 – Khairul

回答

0

這聽起來像你希望的結果,看起來像這樣:

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

2

我想你想提取selectReader關鍵和AntennaIsEnabled作爲價值

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

需要添加一些錯誤檢查...

+0

我已經編輯我的問題更準確:) – Khairul

0

嘗試使用FastMember庫以字符串形式訪問您的屬性。

相關問題