Готовые к использованию классы управления - PullRequest
0 голосов
/ 21 ноября 2011

Я знаю, как получить доступ к объектам управления. Скажем так:

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");            
foreach (var nic in searcher.Get())
{                
    Console.WriteLine(nic["caption"]);
}

Теперь этот ник [] - синтакс очень плох в использовании. Если я взгляну на обозреватель серверов Visual Studio, то увижу, что он заполняет сетку свойств для каждого выбранного объекта. Пахнет, как будто они создают привязываемые классы там. Есть ли какие-нибудь библиотеки или подходы, чтобы сделать то же самое? Я хотел бы получить синтаксис вроде

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");            
foreach (var nic in searcher.Get())
{                
    Console.WriteLine((nic as Win32NetworkAdapter).Caption);
}

Я просто не хочу тратить свое время на реализацию чего-то нового, уже изобретенного!

Ответы [ 3 ]

2 голосов
/ 03 февраля 2012

Почему бы не использовать Mgmtclassgen.exe (генератор классов со строго типизированным управлением) , который является частью Visual Studio?

1 голос
/ 21 ноября 2011

WMI принимает запрос и возвращает неопределенный набор результатов.Запрос похож на SQL, поэтому может возвращать только определенные столбцы.Сетка свойств просто перечисляет каждое возвращаемое значение в отдельные имена и значения.Там нет фиксированного столбца, установленного для любого результата запроса.По этой причине вам нужно явно выбрать каждого из возвращенного списка.

0 голосов
/ 22 ноября 2011

Просто чтобы сделать других счастливыми, как я, я создал T4 для решения моей проблемы. Это задокументировано на http://www.codingfreaks.de/2011/11/22/t4-fur-wmi-zugriff/ (на немецком языке !!!) и может быть получено на http://www.codingfreaks.de/files/wmi01/WmiHelper.tt. Чтобы это заработало, просто

  1. Добавьте его в свой проект в VS.
  2. Добавить текстовый файл с именем "Classes.txt".
  3. Добавить строку для каждого WMI-класса, который вы хотите использовать, в «Classes.txt» (например, «Win32_NetworkAdapter»)
  4. Щелкните правой кнопкой мыши tt-файл в проекте и используйте «пользовательский инструмент».
  5. Перейдите к своему коду и введите WmiHelper. *

Наслаждайтесь!

...