C#-visualstudio-&x27;对象';不包含';执行';
我正在尝试向现有项目添加代码,该项目将检查SCCM中是否存在设备,如果确实存在,则将其删除。我似乎遗漏了一些东西,在那个特定的代码块中。我收到一个错误-“object”不包含“ExecuteQuery”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“ExecuteQuery” 以下是C#代码: 创建自定义“连接”对象: 然后对其属性之一调用方法:C#-visualstudio-&x27;对象';不包含';执行';,c#,visual-studio,C#,Visual Studio,我正在尝试向现有项目添加代码,该项目将检查SCCM中是否存在设备,如果确实存在,则将其删除。我似乎遗漏了一些东西,在那个特定的代码块中。我收到一个错误-“object”不包含“ExecuteQuery”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“ExecuteQuery” 以下是C#代码: 创建自定义“连接”对象: 然后对其属性之一调用方法: connection.QueryProcessor.ExecuteQuery("...") 但是QueryProcessor属性是
connection.QueryProcessor.ExecuteQuery("...")
但是QueryProcessor
属性是什么
public object QueryProcessor { get; internal set; }
它是一个对象
。如错误所述,object
没有名为ExecuteQuery
的方法。(实际上,它没有太多的方法或属性。)
我真的无法从这段代码中分辨出(可能我遗漏了什么?)您希望QueryProcessor
是什么特定类型,但它肯定应该是比object
更具体的类型。可能是类似于SQLCommand
对象的东西?本质上,任何类型都会有ExecuteQuery
方法
如果在现有的代码库中有一个令人信服的原因使其属于
对象类型
,则需要确定该原因是什么。这里似乎大量使用了对象
,这让人感觉到在你到达之前的一些糟糕的设计选择。好吧,经过几天的搜索,我终于找到了问题所在
最后的整个代码块是不必要的。问题是代码中缺少程序集引用和using语句。具体而言:
using Microsoft.ConfigurationManagement.ManagementProvider;
using Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine;
相应的DLL也需要作为参考添加到项目中
我希望这能帮助那些遇到类似问题并且不精通C#编码的人。我自己只精通PowerShell,所以弄明白这一点对我来说需要很多工作。谢谢。
public object ExecuteQuery{get;internal set;}
这里应该是什么类型而不是object?如果这是其他人的代码,并且它是出于某种原因设计的,请找出该属性的值实际是什么类型,并在使用时显式将其转换为该类型。在所有这些代码中,您从何处得到此错误?也许您可以从阅读从其他人那里复制的代码开始。@David-这是引用ExecuteQuery的行。是的-您完全理解。我正在做一个别人开始但没有完成的项目。这不是理想的情况。我不相信在现有的代码库中有令人信服的理由将ExecuteQuery定义为object类型——老实说,我不确定底部的任何代码。看起来很多都是为了“修复”错误而添加的。对不起,我的意思是QueryProcessor是object类型的。
public object QueryProcessor { get; internal set; }
using Microsoft.ConfigurationManagement.ManagementProvider;
using Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine;