2013-10-21 51 views
1

構建我的C#項目時,我當前正在收到CS1061錯誤。這個錯誤只發生在我的代碼中的一個非常特定的地方。C#在部分類中引用方法時編譯失敗

錯誤CS1061描述:'type' does not contain a definition for 'member' and no extension method 'name' accepting a first argument of type 'type' could be found (are you missing a using directive or an assembly reference?).

我有兩個文件,一個main.cspartial.cspartial.csmain.cs的部分類別。 main.cs包含兩個類,main類和helper類。當helper類實例化main類,併爲建立一個在partial.cs文件中定義的main類的方法的調用

錯誤被拋出。

從我的理解,這不應該是一個問題。 main類被分成兩個文件,但在編譯期間,部分類被組合在一起。

這個問題似乎非常相似,但他的決議並不適用於我。這兩個文件都包含在項目中。 ASP.NET C# partial class in separate files not working CS1061

任何想法?

main.cs

namespace Price.WS 
{ 
    public partial class Main : BaseWebService 
    { 
     public Main() 
     { 
      //CODEGEN: This call is required by the ASP.NET Web Services Designer 
      InitializeComponent(); 
     } 

     private DataSet _TestMethod() 
     { 
      //Stuff  
     }   
    } 

    public class Helper: IExchangeable 
    { 
     public void Test() 
     {    
      using (Main main = new Main()) 
      { 
       main.TestMethod(); //This is where the error gets thrown. The compiler doesn't see TestMethod() as a method of main 
      } 
     } 
    } 
} 

Partial.cs:

namespace Price.WS 
{ 
    public partial class Main : BaseWebService 
    {   
     [WebMethod()] 
     public DataSet TestMethod() 
     { 
      //Stuff 
      return _TestMethod(); 
      //Stuff 
     }   
    }  
} 

編輯:看來,這是不特定於被稱爲輔助類的方法。在單獨的類中構建期間還會引發另一個錯誤。除了沒有額外的輔助類以外,這個類的設置方式與上一次相同。當部分類的主要部分調用在另一個文件中的部分類中聲明的方法時,此失敗。

+0

你在類Main中有一個_TestMethod()嗎?你正在返回你沒有想到的東西。在基類中它是私人的,你不能訪問它。 – Bit

+2

不要嘗試從另一個類中調用* private *的方法。 –

+0

哎呀糟糕的複製粘貼。這是一種公開的方法。 –

回答

0

我發現了這個問題。這個錯誤實際上是在另一個有這個類的鏈接的項目中。具有該鏈接的項目不包含指向部分類的鏈接,因此方法不可用。