C# 随时可用的管理类

C# 随时可用的管理类,c#,system.management,C#,System.management,我知道如何访问管理对象。让我们这样说: var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter"); foreach (var nic in searcher.Get()) { Console.WriteLine(nic["caption"]); } 现在这个nic[]-synthax使用起来非常糟糕。如果我看一下visual

我知道如何访问管理对象。让我们这样说:

var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapter");            
foreach (var nic in searcher.Get())
{                
    Console.WriteLine(nic["caption"]);
}
现在这个nic[]-synthax使用起来非常糟糕。如果我看一下visual Studio server explorer,就会发现它填充了我选择的每个对象的属性网格。闻起来好像他们正在那里创建可绑定的类。是否有任何LIB或方法可以做到这一点?我想得到一个语法,比如

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

我只是不想浪费时间去实现一些已经发明出来的新东西

WMI接受查询并返回一组不确定的结果。该查询类似SQL,因此可能只返回某些列。属性网格只是将每个返回值枚举为单独的名称和值。没有为任何查询结果设置固定列。因此,您需要显式地从返回的列表中获取每个结果。

WMI接受一个查询并返回一组不确定的结果。该查询类似SQL,因此可能只返回某些列。属性网格只是将每个返回值枚举为单独的名称和值。没有为任何查询结果设置固定列。出于这个原因,您需要从返回的列表中显式地获取每个列表。

为了让其他人像我一样高兴,我创建了一个T4来解决我的问题。它是用德语记录的!!!并可于。为了让它工作,只要

将其添加到VS中的项目中。 添加名为Classes.txt的文本文件。 为要在Classes.txt中使用的每个WMI类添加一行,例如Win32_NetworkAdapter 右键单击项目中的tt文件并使用用户定义的工具。 转到您的代码并键入WmiHelper*
享受吧

为了让其他人像我一样快乐,我创建了一个T4来解决我的问题。它是用德语记录的!!!并可于。为了让它工作,只要

将其添加到VS中的项目中。 添加名为Classes.txt的文本文件。 为要在Classes.txt中使用的每个WMI类添加一行,例如Win32_NetworkAdapter 右键单击项目中的tt文件并使用用户定义的工具。 转到您的代码并键入WmiHelper*
享受吧

为什么不使用which是Visual Studio的一部分?

为什么不使用which是Visual Studio的一部分?

感谢您将其清除。我确实理解默认行为。那么,你说,没有包装器库可以生成像Win32NetworkAdapter这样的代理类?我在过去的4个多月里主要处理C中的WMI,我从来没有遇到过这样的类。主要问题是某些操作系统上不存在某些字段。你必须自己测试每一个的存在性和有效性。谢谢你澄清这一点。我确实理解默认行为。那么,你说,没有包装器库可以生成像Win32NetworkAdapter这样的代理类?我在过去的4个多月里主要处理C中的WMI,我从来没有遇到过这样的类。主要问题是某些操作系统上不存在某些字段。你必须自己测试每一个的存在性和有效性。该死!我不知道,他们得到了这个!所以我的T4在大多数情况下都是过时的。谢谢你和+1!该死我不知道,他们得到了这个!所以我的T4在大多数情况下都是过时的。谢谢你和+1!