我有一個名爲「卡車」的部分類,它是使用LINQ to SQL設計器自動生成的。我在一個單獨的代碼文件中使用同名部分類擴展了這個類。我向我的擴展器類添加了一個名爲「ContainerCount」的方法。在開發過程中,解決方案有時會生成良好,但有時會出現錯誤...爲什麼編譯器找不到擴展dbml的部分類?
CS1061:'truck'不包含'ContainerCount'的定義,也沒有擴展方法'ContainerCount'接受可以找到'卡車'類型的第一個參數(你是否缺少使用指令或程序集參考?)
在開發過程中,我所要做的就是再次構建它,而且這將是沒有錯誤的。這似乎是被擊中或錯過。但是現在我已經將它上傳到服務器,它一直顯示相同的錯誤。
關於爲什麼編譯器有時會看到部分類的其餘部分,有時不知道的任何想法?
//from DBML file
[Table(Name="dbo.truck")]
public partial class truck : INotifyPropertyChanging, INotifyPropertyChanged
{...}
//from extension file
public partial class truck
{
public int ContainerCount(CTSDataClassesDataContext db)
{...}
}
//Code that creates error
int tContainers = 0;
foreach (var t in trucks)
{
tContainers += t.ContainerCount(db);
}
你能給我看一些代碼嗎?從LINQ to SQL生成的「卡車」是否具有「部分」修飾符? –
名稱空間是否相同?這些文件是否在同一個項目中? – Oded
我認爲這是由於設計師的東西。這是把代碼放入Windows窗體的InitializeComponents()中。不知何故,VS設計師出於不同的原因決定重新生成它,因此您的更改將被清除。認爲這是或多或少相同的問題,因爲你將擴展由設計師產生的一些問題。 – Tigran