天天看點

LINQ-to-SQL那點事~耳目一新的partial class 和 partial method

​​回到目錄​​

當你打開擴充名為dbml的LINQ-to-SQL的檔案後,你将會看到很多用partial修飾符來修飾的方法,類等,它們是用來做什麼的呢?起初到win form時代也這個東西,partial譯為“部分”,就是說它隻是某個東西的一部分,你可以在其它地方再去擴充它,起初微軟就認為對于一個類來說,可能不是一個人做涉及,它可能是幾個人同時去幹預它,是以,它提出的“分部類 partial class”的概念,它之後被非常好的應用到了LINQ-to-SQL中。

對于一個由生成器為我們生成的模型來說,LINQ-to-SQL一定不知道我們以後要做什麼,它隻能把最标準的代碼為我們生成,可能是一個表對象,一些表屬性,固定的行為,事件等等,但與業務相關的東西它無法生成,這時,它将類,方法做成了partial,如圖:

LINQ-to-SQL那點事~耳目一新的partial class 和 partial method

這使我們可以在DBML模型外部去擴充這個User_Info類,它裡面也有partial method,事實上,partial method隻能被實作一次,必須傳回值必須是void,一般地,在DBML模型中隻是規定了固定的method簽名,而真到的實作你可以自己在擴充的class中去實作。

LINQ-to-SQL那點事~耳目一新的partial class 和 partial method

像下面三個partial method是公用的,對于每個實作它們都是統一的,其中OnCreated是指當類型被new時,去執行本方法,有時,我們确實需要這樣去做

LINQ-to-SQL那點事~耳目一新的partial class 和 partial method

對于微軟自己生成的LINQ-to-SQL(DBML)檔案,我們通過檢視它的源代碼,确實使我們耳目一新,另一方面也感覺到了C#語言的魅力,而我們當初抛棄JAVA(不思進取的語言)是正确的選擇,呵呵!

​​回到目錄​​