2013-07-16 75 views
0

我想從運行該類型的GetFields方法的linq查詢中獲取基礎類型。在我的例子,我有:因爲我不能返回類型FieldInfo轉換成我所期待的從linq列表查詢中獲取類和對象類型

string mClass = "Computer"; //match string 
var t = typeof(SystemMonitoringClass); 
var monitoringClass = (SystemMonitoringClass)t.GetFields().First(x => x.Name == mClass); 

在我的3號線鑄造失敗。所以找到合適的領域後,我如何才能得到實際的物體。此解決方法是由於新的SCOM 2012 SDK將enum改爲SystemMonitoringClass。如果有人有更好的方法來匹配一個字符串,並在這種情況下獲得實際的監測對象或字段,那也可以。

http://msdn.microsoft.com/en-us/library/hh326622.aspx

+0

什麼與反對票? – Warz

回答

1

您需要的「場」的概念從「該字段的值特定實例」分開。您想要FieldInfo.GetValue,例如

var monitoringClass = (SystemClass) field.GetValue(null); 

編輯:我注意到,實際上是宣告迴歸SystemClass類型的值,而不是SystemMonitoringClass - 所以你可能要適當地改變你的演員,因爲我有以上。

+0

然後我需要施放'(SystemMonitoringClass)FieldInfo.GetValue'嗎? – Warz

+0

@Warz:是的,因爲'GetValue'被聲明爲返回'object'。 –

+0

我不知道你在做什麼'var monitoringClass =(SystemMonitoringClass)field.GetValue(instance);'什麼是實例應該是 – Warz