0

我试图从针对类型GetFields方法运行的 linq 查询中获取基础类型。在我的例子中,我有:

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

我的第 3 行中的转换失败,因为我无法将返回类型FieldInfo转换为我正在寻找的类型。所以在找到正确的字段后,我怎样才能得到实际的对象。此解决方法是由于新的 SCOM 2012 SDKSystemMonitoringClass从枚举更改为类。如果有人有更好的方法来匹配字符串并在这种情况下获取实际的监控对象或字段,那也可以。

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

4

1 回答 1

1

您需要将“字段”的概念与“特定实例的该字段的值”分开。你想要FieldInfo.GetValue,例如

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

编辑:我注意到它SystemMonitoringClass.Computer实际上被声明为返回一个 type 的值SystemClass,而不是SystemMonitoringClass- 所以你可能想适当地改变你的演员表,就像我上面所说的那样。

于 2013-07-16T17:43:19.830 回答