2017-06-08 150 views
-2

我的問題是這樣的:編譯錯誤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); 
     } 

    } 

} 
+1

你能提供更多的代碼嗎?至少ResponseManager類。 – pablocity

+0

你的解決方案中是否有另一個ResponseManager類?如果你選擇'responseManager.manage(response)'這一行,並將光標置於manage和F12上。它是否適用於您期望的課程和方法? – Stuart

+0

@Stuart它是唯一一個使用這個名稱和這種方法(並且它是正確的方法) – mJehanno

回答

1

你可以嘗試做一個乾淨的解決方案。構建>清潔解決方案。

您也可以嘗試刪除解決方案中的所有obj文件夾並重建解決方案。

+0

感謝您的幫助! – mJehanno

0

如果您是確保問題不在於你的代碼不是試圖卸載和重裝該項目或重新啓動VS2017。它有時解決了這個問題。並請提供RespnseManager的代碼。

+0

我已經嘗試重新啓動計算機並使用Rider(jetbrain's C# ide) – mJehanno

+0

根據所提供的信息,我認爲它應該工作得很好。解決方案中是否有其他項目引用可能包含另一個ResponseManager類? – TheBinaryGuy

+0

手動清潔解決方案只是做了這項工作,謝謝你 – mJehanno

相關問題