如果我想將我的LINQ-> SQL類編譯爲一個DLL以提供給我的開發人員,我該如何使它可以仍然鉤入各種實體部分方法(例如OnValidate)?我知道你不能在編譯好的程序集上實現部分方法,但是我對如何提取這種行爲(可能是使用事件?)有任何建議。在已編譯的LINQ-> SQL類上創建部分方法
0
A
回答
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
與事件和自定義處理程序可以讓你在那裏,只要準備好時間投資,如果有大量的類你想訪問。
0
我會被你所期望的任何一點出版公共事件處理這個問題。
0
如果我想要編譯我的LINQ-> SQL類成DLL提供給我的開發人員
我不認爲這是一個好主意。 LinqToSql模型可能需要更改的原因有很多。您可能需要修改模型,同時發現對您的域的新洞察等。
通過創建一個獨立的DLL「提供給開發人員」,您創建了一個可能會妨礙開發效率的人爲邊界。獲得一個源代碼管理系統可能更適合你可能試圖完成的任務(在此非常模糊)
相關問題
- 1. C#在部分類中引用方法時編譯失敗
- 2. 部分元類減法不能編譯
- 3. CodeDom:編譯部分類
- 4. 創建(=編譯)在運行時類,它實現已知接口
- 5. 在JAVA中獲取已編譯類的方法和屬性
- 6. 在Data.xsd上創建Sql TransAction方法
- 7. C++創建和編譯類
- 8. 需要爲已編譯的clojure類創建jar文件
- 9. 未定義的方法'model_name'爲NilClass:創建部分時的類
- 10. 在類方法上創建線程
- 11. 使用羅斯林創建部分類 - 一個編譯在運行時
- 12. 無法鏈接編譯內部類的構建器模式的方法調用
- 13. 創建與編輯部分
- 14. 在已部署的grails上創建補丁的簡單方法應用
- 15. 創建的ASPX繼承的部分類不需要重新編譯
- 16. oracle11g sql:警告:使用編譯錯誤創建的類型
- 17. 在部分類上創建多態方法以在c上發送泛型類型#
- 18. 來自內部類的通用數組創建編譯錯誤
- 19. 創建類方法
- 20. 爲僅在運行時已知的類型創建編譯後的Expession.Lambda
- 21. 創建和更改已創建的php文件的一部分
- 22. 在java中編譯類方法
- 23. 爲什麼編譯器不在外部類中查找方法?
- 24. C# - 編譯器如何找到部分類的另一部分?
- 25. 使用CSharpCodeProvider編譯部分類
- 26. Intellij Idea編譯器重新編譯已編譯的項目
- 27. 使用方法在編譯時創建常量
- 28. 創建在編譯時
- 29. 爪哇:顯示陣列已創建從方法在另一類
- 30. 在新項目中創建部分類
是的,在大多數情況下,我完全與你同步。然而,在我的方案中,我們基於一個內部工具生成linq-> sql類,我們用它快速建模數據庫模型,這使我們可以在需要時重新生成,這樣linq-> sql類和我們的數據庫總是同步。 – Mustafakidd 2009-08-28 16:34:03