C#error(使用接口方法):非静态字段、方法或属性需要对象引用
我在使用一个有过时文档的第三方API时遇到了问题,所以我正试图弄清楚为什么会出现这种@#美元!它不起作用了。以##美元计!!我的意思是“代码”,当然:) 据我所知,WAPISoap是一个公共界面,我通过在visualstudio中添加一个web引用而获得 我还知道descripe()方法接受两个参数,一个字符串和一个类型为credential的对象,并返回一个字符串。任何帮助都将不胜感激:) 以下是我目前得到的信息:C#error(使用接口方法):非静态字段、方法或属性需要对象引用,c#,api,static,C#,Api,Static,我在使用一个有过时文档的第三方API时遇到了问题,所以我正试图弄清楚为什么会出现这种@#美元!它不起作用了。以##美元计!!我的意思是“代码”,当然:) 据我所知,WAPISoap是一个公共界面,我通过在visualstudio中添加一个web引用而获得 我还知道descripe()方法接受两个参数,一个字符串和一个类型为credential的对象,并返回一个字符串。任何帮助都将不胜感激:) 以下是我目前得到的信息: using WAPIClient; using System; using P
using WAPIClient;
using System;
using Project1.WsWWDAPI;
namespace WAPIClient
{
class ResellerAPI
{
public void CallDescribe()
{
String sReturnXml;
Credential m_Crededential = new Project1.WsWWDAPI.Credential();
m_Crededential.Account = "account";
m_Crededential.Password = "password";
String sCLTRID = System.Guid.NewGuid().ToString();
sReturnXml = WAPISoap.Describe(sCLTRID, m_Crededential);
Console.WriteLine(sReturnXml);
}
static void Main(string[] args)
{
ResellerAPI reseller = new ResellerAPI();
reseller.CallDescribe();
}
}
}
错误是因为您在静态上下文中使用非静态方法-您应该拥有WAPISoap的实例,以便调用非静态的成员函数。听起来您需要创建WAPISoap的实例,然后在该实例上调用descripe。descripe方法不是静态的,这意味着您需要在
WAPI
类的实例上调用它:
WsWWDAPI.WAPI m_WAPIObj = null;
WsWWDAPI.Credential m_Crededential = null;
public void Init()
{
m_WAPIObj = new WsWWDAPI.WAPI();
m_Crededential = new WsWWDAPI.Credential();
m_Crededential.Account = "account";
m_Crededential.Password = "password";
}
public void CallDescribe()
{
String sReturnXml;
String sCLTRID = System.Guid.NewGuid().ToString();
sReturnXml = m_WAPIObj.Describe(sCLTRID, m_Crededential);
Console.WriteLine( sReturnXml );
}
static void Main(string[] args)
{
ResellerAPI reseller = new ResellerAPI();
reseller.Init();
reseller.CallDescribe();
}
请参阅:错误在哪一行?带有
descripe()
的行?是的,错误是当我试图调用方法WAPISoap.descripe(sCLTRID,m_credential)时;据我所知,我不能实例化一个接口不,你不能实例化一个接口,但是必须有一个实现该接口的类,你可以实例化,或者某个地方有一个静态方法,可以返回实现该接口的类的实例。谢谢你的帮助,我会尝试寻找你说得对的类-我猜这是某个浏览器的behvior,我已经导航出我的编辑:-(文档中是这么说的,但是WAPI类没有这么说。)exist@ezra:您使用的是旧引用吗?我使用的是该文档中的引用,具体来说是的,它仍然不起作用,我无法在对象浏览器中找到WAPI,请尝试将WsWWDAPI.WAPI
替换为WsWWDAPI.WAPISoap
。