在過去,以一種語言編寫的軟體元件(.exe 或 .dll)不能方便地使用以另一種語言編寫的軟體元件。 在這個問題的解決上,com 向前邁進了一步。 .net framework 允許編譯器向所有的模組和程式集發出附加的說明性資訊,從而使元件互用更加簡單。 這種叫做「元資料」的資訊有助於元件無縫互動。
元資料是一種二進位制資訊,用以對儲存在公共語言執行時可遷移可執行檔案 (pe) 檔案或儲存在記憶體中的程式進行描述。 將您的**編譯為 pe 檔案時,便會將元資料插入到該檔案的一部分中,而將**轉換為 microsoft 中間語言 (msil) 並將其插入到該檔案的另一部分中。 在模組或程式集中定義和引用的每個型別和成員都將在元資料中進行說明。 當執行**時,執行時將元資料載入到記憶體中,並引用它來發現有關**的類、成員、繼承等資訊。
元資料以非特定語言的方式描述在**中定義的每一型別和成員。 元資料儲存以下資訊:
型別的說明
特性
如果您使用過 c++,或許對包含關鍵字(如 public 和 private)的宣告比較熟悉,這些關鍵字提供有關類成員的其他資訊。 另外,這些關鍵字通過描述類成員對其他類的可訪問性來進一步定義類成員的行為。 由於編譯器被顯式設計為識別預定義關鍵字,因此傳統上您沒有機會建立自己的關鍵字。 但是,公共語言執行時允許您新增類似關鍵字的描述性宣告(稱為特性)來批註程式設計元素,如型別、字段、方法和屬性。
為執行時編譯**時,該**被轉換為 microsoft 中間語言 (msil),並同編譯器生成的元資料一起被放到可遷移可執行 (pe) 檔案的內部。 特性使您得以向元資料中放置額外的描述性資訊,並可使用執行時反射服務提取該資訊。 當您宣告從 system.attribute 派生的特殊類的例項時,編譯器會建立特性。
.net framework 出於多種原因使用特性並通過它們解決若干問題。 特性描述如何將資料序列化,指定用於強制安全性的特性,並限制實時 (jit) 編譯器的優化,從而使**易於除錯。 特性還可以記錄檔名或**作者,或在窗體開發階段控制控制項和成員的可見性。
可使用特性以幾乎所有可能的方式描述**,並以富有創造性的新方式影響執行時行為。 使用特性可以向 c#、visual c++、microsoft visual basic 2005 或其他任何以執行時為目標的語言新增自己的描述性元素,而不必重新編寫編譯器。
C 特性詳解
特性提供功能強大的方法,用以將元資料或宣告資訊與 程式集 型別 方法 屬性等 相關聯。reflection.data guid 716c0768f610f38427afe934e71f1d47 特性與程式實體關聯後,即可在執行時使用名為 反射 的技術查詢特性。這篇文章絕大部分是按照msdn來學習的,...
Unity中C 封裝特性詳解
封裝被定義為 把乙個或多個專案封閉在乙個物理的或者邏輯的包中 在物件導向程式設計方 中,封裝是為了防止對實現細節的訪問。抽象和封裝是物件導向程式設計的相關特性。抽象允許相關資訊視覺化,封裝則使開發者實現所需級別的抽象。c 封裝根據具體的需要,設定使用者的訪問許可權,並通過訪問修飾符來實現。乙個訪問修...
STP特性詳解
stp特性詳解 我們平時應用到的stp,雖然可以保證2層網路的無環路,但是他本身也存在一些缺點。比如stp機構收斂速度慢,根交換機的身份很容易遭受威脅,不安全,沒有一種措施來鞏固他們的根交換機的身份。如果要是這樣的話,那麼在乙個網路中,有可能這個網路的stp結構就會頻繁的變化,導致網路中的資料報大量...