2010-03-12 50 views
1

我有一個系統有2個不同的項目,一個叫做LINQ_Extensions,另一個是ORM_Linq。LInq到SQL - 部分類 - C#

在ORM_Linq我有LINQ圖與SQL表「轉換」在類。其中一個類叫做「Tipos_Pago」

在另一個項目中,我有另一個類(部分類)「Tipos_Pago」。我想使用方法OnValidate來驗證包含在類「Tipos_Pago」中的屬性,所以我創建了這個部分類。

在2個項目,我把同一個命名空間「ORM_Linq」(我改變了項目「LINQ_Extensions」的命名空間具有相同的項目「ORM_Linq」的)

那些chages後,Visual Studio中給我此錯誤:

錯誤1找到用於實現部分的方法 'ORM_Linq.Tipos_Pago.OnValidate(System.Data.Linq.ChangeAction)' 的聲明沒有定義聲明ç.. \ Tipos_Pago.cs 13 22 Extensiones_Linq

我不知道發生了什麼,能不能有他LP我?

謝謝,對不起,我英文不好

這是部分類代碼:

namespace ORM_Linq 
{ 
    public partial class Tipos_Pago 
    { 

     partial void OnValidate(System.Data.Linq.ChangeAction action) 
     { 
     //Valid code 
     } 
    } 
} 
+0

BTW;如果他們*在同一個項目中,如果你有(例如)'Tipos_Pago.dbml',請嘗試** not **創建一個名爲'Tipos_Pago.cs'的文件(對於你的部分類) - 有一個bug在代碼生成器(固定在4.0),這意味着這是痛苦的。使用**任何其他的**文件名(很明顯除了'Tipos_Pago.designer.cs')都沒問題。 – 2010-03-12 16:29:35

+0

@Marc - 我一直沒有受到這個錯誤的影響,我總是給它起同樣的名字。你有更多的細節或可以分享的鏈接嗎? – tvanfosson 2010-03-12 16:58:55

回答

2

您不能實現跨越2個項目的部分,因爲他們必須一起編譯, partial聲明必須全部在同一個項目中。

這個規則適用於方法和類。

+0

好的,謝謝,我更改了項目,因爲我有循環引用問題,我不該做什麼,也許我必須更改其他代碼。 – 2010-03-12 16:26:24

2

您需要在與設計器生成的類相同的項目中創建您的部分實現。

從微軟documentation

All partial-type definitions meant to be parts of the same type must be defined in the same assembly and the same module (.exe or .dll file). Partial definitions cannot span multiple modules.