Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-visualstudio-&x27;对象';不包含';执行';_C#_Visual Studio - Fatal编程技术网

C#-visualstudio-&x27;对象';不包含';执行';

C#-visualstudio-&x27;对象';不包含';执行';,c#,visual-studio,C#,Visual Studio,我正在尝试向现有项目添加代码,该项目将检查SCCM中是否存在设备,如果确实存在,则将其删除。我似乎遗漏了一些东西,在那个特定的代码块中。我收到一个错误-“object”不包含“ExecuteQuery”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“ExecuteQuery” 以下是C#代码: 创建自定义“连接”对象: 然后对其属性之一调用方法: connection.QueryProcessor.ExecuteQuery("...") 但是QueryProcessor属性是

我正在尝试向现有项目添加代码,该项目将检查SCCM中是否存在设备,如果确实存在,则将其删除。我似乎遗漏了一些东西,在那个特定的代码块中。我收到一个错误-“object”不包含“ExecuteQuery”的定义,并且找不到接受“object”类型的第一个参数的扩展方法“ExecuteQuery”

以下是C#代码:

创建自定义“连接”对象:

然后对其属性之一调用方法:

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;