C# 检查对象C上是否存在属性

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

我正在使用wmi调用来获取一些如下所示的信息

   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;
        }