專利名稱:到對象上的反射的制作方法
技術領域:
本發(fā)明涉及到對象上的反射。
背景技術:
在面向對象的編程中,“對象”是將一個或多個屬性以及零個或多個方法與交互作用一起包括在內的數據結構。其他軟件可以通過調用對象的方法與對象交互,從而致使對象執(zhí)行過程或函數,所述過程或函數可能讀取和/或改變其一個或多個屬性并且之后可能發(fā)送具有處理結果的另一消息?!懊嫦驅ο蟮某绦颉笨梢员豢闯墒墙换ο蟮募?,每個對象都在接收消息以后處理數據并且還可能生成消息以用于傳遞給其他對象。對象還可以具有元數據,這些元數據不描述對象的屬性,而是輔助對象的使用。例如,元數據可以出于顯示對象的成員或者將對象持久保存在存儲的目的而被讀取。當對象被創(chuàng)作為使得作者可以想到對象可能被使用的方式時,作者可以創(chuàng)建具有合適元數據的對象,這些元數據將輔助所述對象的預期使用。如果出現(xiàn)對象的未預期到的使用,并且附加的元數據可能有助于這些使用,則.NET中的“TypeDescriptor”框架(framework)允許靈活地將元數據添加到對象。簡要概述此處描述的至少一個實施例涉及提供關于具有元數據的對象的不同視圖。例如, 一個代碼段可能具有對象的一個視圖,并且能夠查看該對象的一些元數據,而另一代碼段可能具有該對象的不同視圖,并且具有關于該對象的不同元數據集合的視圖。這可以即使在代碼段駐留在相同應用中的情況下仍然被實現(xiàn)。因此,每個代碼段都可以具有關于該對象的元數據的如下視圖該視圖最有助于該代碼段在不被與該代碼段使用該對象的方式的相關性更小或不相關的元數據干擾的情況下使用該對象。本發(fā)明內容不旨在標識所要求保護的主題的關鍵特征或本質特征,也不旨在用于幫助確定所要求保護的主題的范圍。
為了描述可以獲得上面所列舉的及其他優(yōu)點和特征的方式,下面將參考附圖來呈現(xiàn)對各實施例的更具體的描述??梢岳斫?,這些附圖只描繪了樣本實施例,并且因此不被認為是對其范圍的限制,將通過使用附圖并利用附加屬性和細節(jié)來描述和解釋各實施例,在附圖中圖1示出了可用于采用此處所描述的實施例的示例計算系統(tǒng);圖2抽象地示出了在其中多個代碼段通過相應視圖過濾器訪問關于相同對象的不同視圖的環(huán)境;以及圖3示出了用于向代碼段呈現(xiàn)對象的視圖的方法的流程圖。
具體實施方式
根據在此所述的實施例,描述了向不同代碼段提供對象的不同視圖。例如,一個代碼段可能具有對象的一個視圖,并且能夠查看該對象的一些元數據,而另一代碼段可能具有該對象的不同視圖,并且具有關于該對象的不同元數據集合的視圖。這可以即使在代碼段駐留在相同應用中的情況下仍然被實現(xiàn)。因此,每個代碼段都可以具有關于該對象的元數據的如下視圖該視圖最有助于該代碼段在不被與該代碼段使用該對象的方式的相關性更小或不相關的元數據干擾的情況下使用該對象。首先,將參考圖1來描述關于計算系統(tǒng)的某些介紹性討論。隨后,將參考圖2和3來描述提供對象的視圖的實施例。首先,參考圖1來描述關于計算系統(tǒng)的介紹性討論。計算系統(tǒng)現(xiàn)在越來越多地采取多種多樣的形式。計算系統(tǒng)可以例如是手持式設備、電器、膝上型計算機、臺式計算機、大型機、分布式計算系統(tǒng),或者甚至通常不被視為計算系統(tǒng)的設備。在本說明書以及權利要求書中,術語“計算系統(tǒng)”被廣義地定義為包括包含至少一個處理器以及其上能含有可由處理器執(zhí)行的計算機可執(zhí)行指令的存儲器的任何設備或系統(tǒng)(或其組合)。存儲器可以采取任何形式,并可以取決于計算系統(tǒng)的特性和形式。計算系統(tǒng)可以分布在網絡環(huán)境中,并可包括多個組分計算系統(tǒng)。如圖1所示,在其最基本的配置中,計算系統(tǒng)100通常包括至少一個處理單元102 和存儲器104。存儲器104可以是物理系統(tǒng)存儲器,該物理系統(tǒng)存儲器可以是易失性、非易失性、或兩者的某種組合。術語“存儲器”在此也可用來指諸如物理存儲介質等非易失性大容量存儲。如果計算系統(tǒng)是分布式的,則處理、存儲器和/或存儲能力也可以是分布式的。 如此處所使用的那樣,術語“模塊”或“組件”可以指在計算系統(tǒng)上執(zhí)行的軟件對象或例程。 此處所描述的不同組件、模塊、引擎,以及服務可以實現(xiàn)為在計算系統(tǒng)上執(zhí)行的對象或進程 (例如,作為分開的線程)。在隨后的描述中,參考由一個或多個計算系統(tǒng)執(zhí)行的動作描述了各實施例。如果這樣的動作是以軟件實現(xiàn)的,則執(zhí)行動作的相關聯(lián)計算系統(tǒng)的一個或多個處理器響應于已經執(zhí)行了計算機可執(zhí)行指令來引導計算系統(tǒng)的操作。這樣的操作的示例涉及對數據的操縱。計算機可執(zhí)行指令(以及被操縱的數據)可以存儲在計算系統(tǒng)100的存儲器104中。 計算系統(tǒng)100還可包括可用于提供諸如此處所述用戶界面之類的各種具體用戶界面的顯示器112。計算系統(tǒng)100還可包含允許計算系統(tǒng)100例如通過網絡110與其他消息處理器通信的通信信道108。本發(fā)明的各實施例可以包括或利用諸如一個或多個包括處理器和系統(tǒng)存儲器之類的計算機硬件的專用或通用計算機,這將在以下做出進一步討論。本發(fā)明范圍內的各實施例還包括用于承載或存儲計算機可執(zhí)行指令和/或數據結構的物理計算機可讀介質和其他計算機可讀介質。這樣的計算機可讀介質可以是可由通用或專用計算機系統(tǒng)訪問的任何可用介質。存儲計算機可執(zhí)行指令的計算機可讀介質是物理存儲介質。承載計算機可執(zhí)行指令的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發(fā)明的各實施例可包括至少兩種完全不同的計算機可讀介質計算機存儲介質和傳輸介質。計算機存儲介質包括RAM、ROM、EEPROM、CD-ROM或其他光盤存儲、磁盤存儲或其他磁存儲設備、或可用于存儲計算機可執(zhí)行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的任何其他介質?!熬W絡”被定義為允許在計算機系統(tǒng)和/或模塊和/或其他電子設備之間傳輸電子數據的一個或多個數據鏈路。當信息通過網絡或另一通信連接(硬連線、無線、或硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當地視為傳輸介質。傳輸介質可包括可用于承載計算機可執(zhí)行指令或數據結構形式的所需程序代碼裝置并可由通用或專用計算機訪問的網絡和/或數據鏈路。上述的組合也應被包括在計算機可讀介質的范圍內。此外,在到達各種計算機系統(tǒng)組件之后,計算機可執(zhí)行指令或數據結構形式的程序代碼裝置可從傳輸介質自動轉移到計算機存儲介質(或者相反)。例如,通過網絡或數據鏈路接收到的計算機可執(zhí)行指令或數據結構可被緩存在網絡接口模塊(例如,“NIC”)內的RAM中,然后最終被傳送到計算機系統(tǒng)RAM和/或計算機系統(tǒng)處的較不易失性的計算機存儲介質。由此,應當理解,計算機存儲介質可被包括在同樣(或甚至主要)利用傳輸介質的計算機系統(tǒng)組件中。計算機可執(zhí)行指令例如包括,當在處理器處執(zhí)行時使通用計算機、專用計算機、或專用處理設備執(zhí)行某一功能或某組功能的指令和數據。計算機可執(zhí)行指令可以是例如二進制代碼、諸如匯編語言等中間格式指令、或甚至源代碼。盡管用結構特征和/或方法動作專用的語言描述了本主題,但可以理解的是,所附權利要求書中定義的主題不必限于上述特征或動作。相反,上述特征和動作是作為實現(xiàn)權利要求的示例形式而公開的。本領域的技術人員將理解,本發(fā)明可以在具有許多類型的計算機系統(tǒng)配置的網絡計算環(huán)境中實踐,這些計算機系統(tǒng)配置包括個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設備、多處理器系統(tǒng)、基于微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機、移動電話、PDA、尋呼機、路由器、交換機等等。本發(fā)明也可以在其中通過網絡鏈接(或者通過硬連線數據鏈路、無線數據鏈路,或者通過硬連線和無線數據鏈路的組合)的本地和遠程計算機系統(tǒng)兩者都執(zhí)行任務的分布式系統(tǒng)環(huán)境中實踐。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠程存儲器存儲設備中。圖2示出了在其中將對象210的不同視圖提供給相同程序220的不同代碼段221 和222的執(zhí)行環(huán)境200。對象210是面向對象的程序中的對象。因此,對象210可以包括零個或多個方法以及一個或多個屬性。該方法可以被調用以由此致使對象執(zhí)行可涉及從對象屬性讀和/或向對象屬性寫的過程。除了屬性以外,該對象還包括輔助對象使用的元數據。例如,一些元數據可以用于描述對象應當如何在顯示器上被可視化和/或對象在持久保存時應當如何被串行化。在所示實施例中,對象210被示為包括元數據211。在這種情況下,示出了元數據的三個項目 211A、211B和211C,但是在此所述的原理不限于元數據的類型,也不限于與對象相關聯(lián)的元數據項目的數目。該對象的元數據還可以在運行時間由相應視圖過濾器231或232來合成。兩個代碼段221和222具有關于對象元數據211的視圖。兩個代碼段221和222 本身可以是對象,并且可以是相同計算機程序220的一部分。一個或多個視圖過濾器的集合230提供關于該對象的元數據211的視圖。例如,視圖過濾器231向代碼段221提供對象210的視圖M1,而視圖過濾器232向代碼段222提供對象210的視圖M2。視圖過濾器 230中的每個都實施關于元數據211的對其相應代碼段合適的特定視圖。例如,對象的一個視圖可能與該對象的另一視圖相比揭示不同的元數據集合(例如元數據211A和211B),其中該另一視圖揭示另一不同的元數據集合(例如元數據211B和211C)。在圖2中,視圖過濾器231被示為提供關于單個對象210的視圖Ml。然而,視圖過濾器231可以向代碼段221或任何其他代碼段提供關于多個對象的視圖。同樣,視圖過濾器232被示為提供關于單個對象210的視圖M2,但是可以向代碼段222或任何代碼段提供關于多個對象的視圖。圖3示出了用于提供關于具有元數據的對象的多個視圖的方法300的流程圖。方法300可以在每當對象的視圖將被提供給代碼段時重復,并且例如可以由視圖過濾器230 來執(zhí)行。過濾器檢測代碼段將訪問對象并且接收關于該對象的視圖(動作301)。例如,過濾器231可以通過應用程序接口從代碼段221接收調用。然后,該過濾器確定該視圖的上下文(動作302),并且然后提供該視圖(動作 303)。例如在圖2中,視圖過濾器231確定該視圖的上下文,并且然后將該視圖提供給代碼段221。在一個實施例中,與每個視圖過濾器相關聯(lián)的上下文被預先確定。因此,對于任何可能的上下文而言都存在相關聯(lián)的視圖過濾器。在另一實施例中,視圖過濾器可以訪問與代碼段相關聯(lián)的上下文數據,其中該上下文數據驅動由該視圖過濾器所提供的過濾功能。作為示例,上下文數據可以影響使對象的哪些元數據對代碼段可見。例如參考圖 2,假定對象210的元數據211A有助于確定如何在顯示器上呈現(xiàn)對象的可視化?,F(xiàn)在假定該對象的元數據211B有助于對象210的任何使用。最后,假定該對象的元數據211C對于將對象210存儲到文件中是重要的。最后,假設代碼段221將在顯示器上呈現(xiàn)對象的可視化,并且用于存儲該對象的代碼段222是文件。在給定該場景的情況下,視圖過濾器231的上下文數據可以確定對象視圖241 將僅僅顯現(xiàn)元數據211A和211B并且隱藏元數據211C。這尤其是在元數據211C與元數據 211A不一致得使得元數據211C對代碼段221的可見性可能損害代碼段221的總體功能的情況下是有幫助的。同樣,視圖過濾器232的上下文數據可以確定對象視圖242將僅僅顯現(xiàn)元數據211B和211C并且隱藏元數據211A。這尤其是在元數據211A與元數據211C不一致得使得元數據211A對代碼段222的可見性可能損害代碼段222的總體功能的情況下是有幫助的。所述視圖過濾器可以在對對象進行導航時實施一致性。例如,每個被訪問的對象都可以具有本身為對象的組分組件。例如,假定對象210是人對象。第一層組分對象可以是全名對象、年齡屬性以及地址屬性。全名對象可以包含第二層組分組件,該組分組件包括名組件、中間名組件和姓組件。地址屬性也可以具有第二層組分組件,所述組分組分包括街道地址對象、城鎮(zhèn)屬性、州/省屬性、國家屬性和郵編屬性。該街道地址對象可以具有第三層組分組件,所述組分組件包括街道名稱屬性、街道取向屬性(例如北向、東向、南向、西向)以及街道編號屬性。視圖過濾器231和232甚至可以為相同對象提供不同的導航體驗。作為示例,對象導航的等級可能或多或少受到限制,并且組分組件的類型可以由視圖過濾器來實施。例如在人對象示例中,視圖過濾器231可以允許向下導航到組件的第一層組分屬性。視圖過濾器231可以將全名屬性作為字符串來提供,將年齡屬性作為整數來提供,以及將地址屬性作為字符串來提供。無論底層對象210是否具有可以使用對象的不同視圖而被導航的另外的層,代碼段221都可以不具有信息。視圖過濾器231可以與哪些代碼段通過視圖過濾器訪問對象有關地實施關于對象210的這樣的視圖。在相同示例中,視圖過濾器232可以允許不同的導航體驗。在此,全名對象可能不是字符串類型,而是“全名”對象。此外,名屬性、中間名屬性和姓屬性每個都是字符串。在這種情況下,年齡屬性可能不是整數,而是字符串。此外,地址屬性不是字符串,而是對象類型“地址”。街道地址對象是“街道地址”屬性,該“街道地址”屬性包含整數類型的街道編號屬性、“方向”類型的街道取向屬性(其可以包含值W、N、S或E或空集)以及字符串類型的街道名稱屬性。城鎮(zhèn)屬性、州/省屬性和國家屬性可以是字符串類型,并且郵編屬性可以是整數類型。同樣,視圖過濾器232可以與哪些代碼段通過視圖過濾器訪問對象有關地實施關于對象210的這樣的視圖?,F(xiàn)在將描述實施視圖一致性的示例。假定存在對象01和提供該對象01的視圖的視圖過濾器?,F(xiàn)在假定該視圖過濾器被詢問對象的類型(注意類型為元數據形式),并且該視圖過濾器返回類型Tl。在通過Tl操作時,用戶可能遇見特定的方法,該方法具有返回類型T2。類型T2在如下意義上也“屬于”該視圖過濾器如果用戶將調用該方法并且獲得其結果(其為對象02)并且向視圖過濾器詢問02的類型,則將得到類型T2。因此,在此所述的原理執(zhí)行不同的代碼段以具有關于相同對象的不同視圖,其中這些不同視圖可以影響對象的類型或元數據對該對象的可見性。這即使在元數據被許可為可見時可能內部地與一些功能不一致或干擾一些功能的情況下仍然允許許可對象具有任何類型的支持多種多樣功能的元數據。過濾器可以使有助于請求對象的代碼段的該元數據可見,并且隱藏無助于該代碼段的元數據。同樣,該過濾器提供了對象的合適的和為代碼段定制的類型化結構。本發(fā)明可以在不偏離其精神或基本特征的情況下體現(xiàn)為其他具體形式。所描述的實施例在所有方面都應被認為僅是說明性而非限制性的。從而,本發(fā)明的范圍由所附權利要求書而非前述描述指示。落入權利要求書的等效方案的含義和范圍內的所有改變都將被權利要求書的范圍所涵蓋。
權利要求
1.一種包括上面具有計算機可執(zhí)行指令的一個或多個計算機可讀介質(104)的計算機程序產品,所述計算機可執(zhí)行指令在由計算系統(tǒng)(100)的一個或多個處理器(10 執(zhí)行時致使所述計算系統(tǒng)實例化下列項目具有元數據011)的對象O10);具有第一代碼段021)和第二代碼段022)的程序Q20);以及查看器組件030),該查看器組件(230)提供關于該對象的多個同時被過濾的視圖 014,242),使得該查看器組件向第一代碼段提供該對象的第一視圖041)并且向第二代碼段提供該對象的第二視圖042),其中與第二視圖相比,該對象的元數據的不同部分在第一視圖中為可見的。
2.如權利要求1所述的計算機程序產品,其特征在于,該查看器組件在運行時間生成該元數據的至少一部分。
3.如權利要求1所述的計算機程序產品,其特征在于,第一和第二代碼段每個都是對象。
4.如權利要求1所述的計算機程序產品,其特征在于,該對象的第一和第二視圖提供對元數據的公共部分的可見性,并且第一和第二視圖至少之一提供對該元數據的不同部分的可見性。
5.如權利要求1所述的計算機程序產品,其特征在于,該對象的第一視圖與該對象的第二視圖相比提供該對象的不同類型的響應。
6.如權利要求1所述的計算機程序產品,其特征在于,該對象的第一視圖由第一視圖過濾器來提供,并且該對象的第二視圖由第二視圖過濾器來提供。
7.如權利要求1所述的計算機程序產品,其特征在于,第一反射對象在該對象被導航時提供關于該對象的一致性視圖。
8.如權利要求1所述的計算機程序產品,其特征在于,該具有元數據的對象是具有元數據的特定對象,其中查看器組件提供關于包括該特定對象的多個對象的多個同時被過濾的視圖。
9.一種計算機實現(xiàn)的用于提供關于具有元數據011)的對象OlO)的多個視圖(M1, 242)的方法(300),該方法包括:檢測(301)第一代碼段021)具有關于對象OlO)的視圖的動作;響應于檢測到第一代碼段具有關于該對象的視圖,向第一代碼段提供(30 該對象的第一視圖041)的動作,第一視圖使元數據OllA)的第一部分對第一代碼段可見;檢測(301)第二代碼段(222)具有關于該對象的視圖的動作;響應于檢測到第二代碼段具有關于該對象的視圖,向第二代碼段提供(30 該對象的第二視圖042)的動作,第二視圖使元數據OllB)的第二部分對第二代碼段可見,第二部分與第一部分不同。
10.如權利要求9所述的方法,其特征在于,第一代碼段是對象。
全文摘要
本發(fā)明涉及到對象上的反射。關于具有元數據的對象的不同視圖。例如,一個代碼段可能具有對象的一個視圖,并且能夠查看該對象的一些元數據,而另一代碼段可能具有該對象的不同視圖,并且具有關于該對象的不同元數據集合的視圖。這可以即使在代碼段駐留在相同應用中的情況下仍然被實現(xiàn)。因此,每個代碼段都可以具有關于該對象的元數據的如下視圖該視圖最有助于該代碼段在不被與該代碼段使用該對象的方式的相關性更小或不相關的元數據干擾的情況下使用該對象。
文檔編號G06F9/44GK102279740SQ20111016836
公開日2011年12月14日 申請日期2011年6月10日 優(yōu)先權日2010年6月11日
發(fā)明者D·M·基恩, M·特羅芬 申請人:微軟公司