Получить класс и тип объекта из запроса списка linq
Я пытаюсь получить базовый тип из запроса linq, работающего против типа GetFields
метод. В моем примере у меня есть:
string mClass = "Computer"; //match string
var t = typeof(SystemMonitoringClass);
var monitoringClass = (SystemMonitoringClass)t.GetFields().First(x => x.Name == mClass);
Приведение в моей 3-й строке не удается, так как я не могу преобразовать возвращаемый тип FieldInfo
в то, что я ищу. Итак, после нахождения правильного поля, как я могу получить реальный объект. Это временное решение связано с изменением нового SDK SCOM 2012 SystemMonitoringClass
от перечисления до класса. Если у кого-то есть лучший подход для сопоставления строки и получения фактического объекта или поля мониторинга в этом случае, это также сработает.
1 ответ
Вы должны отделить понятия "поле" от "значения этого поля для конкретного экземпляра". Ты хочешь FieldInfo.GetValue
например,
var monitoringClass = (SystemClass) field.GetValue(null);
РЕДАКТИРОВАТЬ: я отмечаю, что SystemMonitoringClass.Computer
фактически объявлено, чтобы вернуть значение типа SystemClass
не SystemMonitoringClass
- так что вы можете изменить свой состав соответствующим образом, как я уже выше.