C# 检查对象C上是否存在属性
我正在使用wmi调用来获取一些如下所示的信息C# 检查对象C上是否存在属性,c#,C#,我正在使用wmi调用来获取一些如下所示的信息 var queryObj = new ObjectQuery("SELECT * FROM Win32_Processor"); var vmSearcher = new ManagementObjectSearcher(queryObj); foreach (ManagementObject MO in vmSearcher.Get()) { if (MO.Ge
var queryObj = new ObjectQuery("SELECT * FROM Win32_Processor");
var vmSearcher = new ManagementObjectSearcher(queryObj);
foreach (ManagementObject MO in vmSearcher.Get())
{
if (MO.GetType().GetProperty("AddressWidth") != null)
{
Value = MO["AddressWidth"].ToString();
}
//TRY TO FORCE TO NOT EXIST TO TEST..IS THIS THE WAY TO FORCE A
//PROPERTY OUT??
MO["CurrentClockSpeed"] = null;
if (MO.GetType().GetProperty("CurrentClockSpeed") != null)
{
Value2 = MO["CurrentClockSpeed"].ToString();
}
}
问题是一些机器有一些属性,而另一些机器有其他属性
如何检查计算机上是否存在属性?
我的东西坏了
我最终想要的是简单地打印出我选择的属性,如代码示例中的on(如果存在)是否尝试在ManagementObject上查询集合?强制输出属性是什么意思?对不起,这个问题对我来说没有意义。你到底想做什么?如果我没有错的话,MO是一种字典。那么,如果你改用MO.ContainsKeyx不是更好吗?@Crimson7-你错了。MO正确声明为ManagementObject,而不是Dictionary。不确定字典假设来自何处。使用MO.Properties.Removex取消设置数据,使用MO.Properties.Containsx检查数据是否存在如何?
public static object TryGetProperty(ManagementObject wmiObj, string propertyName)
{
object retval;
try
{
retval = wmiObj.GetPropertyValue(propertyName);
}
catch (System.Management.ManagementException ex)
{
retval = null;
}
return retval;
}