2009-08-26 29 views
0

如果我想將我的LINQ-> SQL類編譯爲一個DLL以提供給我的開發人員,我該如何使它可以仍然鉤入各種實體部分方法(例如OnValidate)?我知道你不能在編譯好的程序集上實現部分方法,但是我對如何提取這種行爲(可能是使用事件?)有任何建議。在已編譯的LINQ-> SQL類上創建部分方法

回答

1

您可能需要定製該解決方案爲您的需要,但出版的部分方法事件的一個簡單的方法可以做到像這樣:

partial class LinqClass 
{ 
    public event Action<LinqClass, ChangeAction> OnValidating; 

    partial void OnValidate(ChangeAction action) 
    { 
     if (OnValidating != null) 
     { 
      OnValidating(this, action); 
     } 
    } 
} 

您可能會或可能不會需要沿着不同的參數傳遞,但Action將支持衆多。

1

據我所知,你不能。

編譯器遇到部分類時,它將它們組合在一起形成一個完整的類。我看到你的需求得到滿足的唯一方法是讓你的類可以繼承,但對於L2S來說,這可能比它的價值更麻煩。

編輯:

至於事件,這取決於你L2S類計數的大小,這一切都取決於你願意把這個解決方案可以工作,但需要相當長的時間來對。結合Interfaces與事件和自定義處理程序可以讓你在那裏,只要準備好時間投資,如果有大量的類你想訪問。

MSDN - Partial Classes

0

我會被你所期望的任何一點出版公共事件處理這個問題。

0

如果我想要編譯我的LINQ-> SQL類成DLL提供給我的開發人員

我不認爲這是一個好主意。 LinqToSql模型可能需要更改的原因有很多。您可能需要修改模型,同時發現對您的域的新洞察等。

通過創建一個獨立的DLL「提供給開發人員」,您創建了一個可能會妨礙開發效率的人爲邊界。獲得一個源代碼管理系統可能更適合你可能試圖完成的任務(在此非常模糊)

+0

是的,在大多數情況下,我完全與你同步。然而,在我的方案中,我們基於一個內部工具生成linq-> sql類,我們用它快速建模數據庫模型,這使我們可以在需要時重新生成,這樣linq-> sql類和我們的數據庫總是同步。 – Mustafakidd 2009-08-28 16:34:03

相關問題