我的問題是這樣的:編譯錯誤CS0176(靜態成員不能被訪問)對非靜態方法
,當我嘗試編譯我的C#應用程序就運行到這個異常:
靜態成員「 ResponseManager.manage(Response)'不能通過實例引用訪問 ;與類型名限定它,而不是
這個
ResponseManager responseManager = new ResponseManager();
responseManager.manage(response);
正如你可以看到我使用的ResponseManager的新實例。
這裏是他的「管理」方法的聲明:
public void manage(Response response)
我在項目檢查,它與這個名稱的唯一方法,她是不是靜態的,ResponseManager沒有任何靜態字段/方法和但它不會編譯。
當我嘗試處處重命名我的方法在我的代碼(聲明和用法),我收到以下錯誤:
ResponseManager不包含「sometest」的定義,並沒有 擴展方法「sometest」接受 型「ResponseManager」的第一個參數可以找到(是否缺少使用 指令或程序集引用?)
我希望我提供足夠多的信息來幫助我解決這個問題。 非常感謝!
編輯:
public class ResponseManager
{
TransactionDAO transactionDAO = new TransactionDAO();
LignesDAO ligneDAO = new LignesDAO();
SimDAO simDAO = new SimDAO();
MailSender mailSender = new MailSender();
HttpClient httpClient = new HttpClient();
ApplicationDAO appDAO = new ApplicationDAO();
//RENAME !!!!!!!!
public void manage(Response response)
{
if (response.responseStatus.status == "SUCCESS")
{
transactionDAO.updateTransactionById(response.header.transactionId, response.responseStatus.status);
string type = transactionDAO.getTransactionTypeById(response.header.transactionId);
if(type != null) {
switch (type) {
case "activate":
ligneDAO.setActivatedSim(response.simIdendity.simSerial);
//simDAO.setActivatedSim(response.simIdendity.simSerial);
break;
case "suspend":
ligneDAO.setSuspendedSim(response.simIdendity.simSerial);
//simDAO.setSuspendedSim(response.simIdendity.simSerial);
break;
case "reactivate":
ligneDAO.setActivatedSim(response.simIdendity.simSerial);
//simDAO.setActivatedSim(response.simIdendity.simSerial);
break;
case "detail-subscription":
break;
case "detail-sim":
//Mapping between Response and Sim classes
break;
case "bar" :
break;
case "unbar" :
break;
}
}
int appId = transactionDAO.getIdAppFromTransactionId(response.header.transactionId);
string url = appDAO.getUrlFromAppId(appId);
httpClient.send(null, url);
}
else
{
transactionDAO.updateTransactionById(response.header.transactionId, response.responseStatus.status, response.responseStatus.errorCode);
string type = transactionDAO.getTransactionTypeById(response.header.transactionId);
mailSender.createTransatelProvisionningErrorMail(response.header.transactionId, response.simIdendity.simSerial, response.simIdendity.msisdn, type, response.responseStatus.errorCode, response.responseStatus.reason);
}
}
}
你能提供更多的代碼嗎?至少ResponseManager類。 – pablocity
你的解決方案中是否有另一個ResponseManager類?如果你選擇'responseManager.manage(response)'這一行,並將光標置於manage和F12上。它是否適用於您期望的課程和方法? – Stuart
@Stuart它是唯一一個使用這個名稱和這種方法(並且它是正確的方法) – mJehanno