奥米是我编写的用于与WMI(Windows管理规范)通信的新.NET库。这些年来,我已经开发了数十种与WMI兼容的应用程序,我总是得出这样的结论:.NET标准库非常差,并且使开发人员编写过多的代码来获取简单的值。那是ORMi站立的地方。为了使每个WMI的工作更加轻松,并使开发人员编写更具可读性,易于理解和可维护的代码。
自从ORMi的第一个版本以来,我已经添加了一些改进,例如异步方法,WMI监视程序和WMI方法支持。
使用WMI和.NET的任何人都可以告诉您,WMI的工作可能令人头疼。 WMI类名不是更简单的名称,而且绝对不是更直观的名称。具有棘手的和非常规的名称。我敢打赌,您永远都不想在您的项目的班级上给这个名字。这是ORMi变得更简单,更直观的一件事。
让我告诉你它是如何工作的:
为了获得ORMi的完整经验,定义我们的模型并将其映射到WMI类非常重要。假设我们要获取连接到PC的设备列表。那很简单:
通过使用某些属性可以增强上述类。 WMI类 告诉ORMi WMIClass的名称是什么 设备 代表。 WMI属性 属性指出将被映射到该属性的WMI属性。 ORMi的工作方式如下:如果没有属性,则使用成员名称进行映射。如果已设置属性,则使用属性名称。
然后,通过正确设置模型,我们可以查询WMI以获取所需的实例:
例如,如果您只想搜索鼠标设备,则可以通过以下方式查询:
奥米还支持所有CRUD操作。您可以以非常简单的方式添加,修改或删除实例。
在此示例中定义的类是通过以下方式定义的:
还以异步方式支持所有这些操作。
欢迎您提出改进建议,修复程序并为项目做出贡献!。
项目存储库和文档: //github.com/nicoriff/ORMi
您可以通过NuGet下载: //www.nuget.org/packages/ORMi/
自从ORMi的第一个版本以来,我已经添加了一些改进,例如异步方法,WMI监视程序和WMI方法支持。
使用WMI和.NET的任何人都可以告诉您,WMI的工作可能令人头疼。 WMI类名不是更简单的名称,而且绝对不是更直观的名称。具有棘手的和非常规的名称。我敢打赌,您永远都不想在您的项目的班级上给这个名字。这是ORMi变得更简单,更直观的一件事。
让我告诉你它是如何工作的:
为了获得ORMi的完整经验,定义我们的模型并将其映射到WMI类非常重要。假设我们要获取连接到PC的设备列表。那很简单:
C#:
[WMIClass("Win32_PnPEntity")]
public class Device
{
public string Name { get; set; }
public string Description { get; set; }
[WMIProperty("Status")]
public string StatusName { get; set; }
}
通过使用某些属性可以增强上述类。 WMI类 告诉ORMi WMIClass的名称是什么 设备 代表。 WMI属性 属性指出将被映射到该属性的WMI属性。 ORMi的工作方式如下:如果没有属性,则使用成员名称进行映射。如果已设置属性,则使用属性名称。
然后,通过正确设置模型,我们可以查询WMI以获取所需的实例:
C#:
static void Main(string[] args)
{
WMIHelper helper = new WMIHelper("root\\CimV2");
List<Device> devices = helper.Query<Device>().ToList();
}
例如,如果您只想搜索鼠标设备,则可以通过以下方式查询:
C#:
List<Device> devices = helper.Query<Device>().Where(p => p.Description.Contains("Mouse")).ToList();
奥米还支持所有CRUD操作。您可以以非常简单的方式添加,修改或删除实例。
C#:
Person person = new Person
{
FirstName = "John",
Lastname = "Doe",
DocumentNumber = "9995",
};
helper.AddInstance(person);
在此示例中定义的类是通过以下方式定义的:
C#:
[WMIClass("Lnl_CardHolder")]
public class Person
{
public string Lastname { get; set; }
public string FirstName { get; set; }
[WMIProperty( Name = "SSNO", SearchKey = true)]
public string DocumentNumber { get; set; }
[WMIIgnore]
public int Age { get; set; }
}
还以异步方式支持所有这些操作。
欢迎您提出改进建议,修复程序并为项目做出贡献!。
项目存储库和文档: //github.com/nicoriff/ORMi
您可以通过NuGet下载: //www.nuget.org/packages/ORMi/