Dot-Net

為什麼首先需要 GUID 屬性?

  • May 23, 2018

GUID 屬性的必要性是什麼?為什麼不讓編譯器自動處理呢?!

如果編譯器自動處理這個問題,你最終會遇到兩種情況之一。

  • 每次編譯時都有一個新的 GUID - 因為應該發布 GUID,所以這會失敗。
  • 衝突 - 如果 GUID 每次都相同,則基於(例如)名稱的雜湊,多個項目最終將使用相同的 GUID 用於不同的目的。

現有方法 - 顯式 GUID 使開發人員能夠根據需要控制這些。

這些是對 COM 非常重要的屬性。它是 .NET 的前身,在 Java 搶盡風頭之前在 90 年代達到了鼎盛時期。.NET 需要與 COM 兼容才能獲得成功。或者換句話說,您需要能夠用大型遺留程序可以使用的 .NET 語言編寫 COM 伺服器。

[ComVisible] 屬性確保 COM 客戶端程序可以看到和使用 IEnumerable 介面。必須允許客戶端程序列舉 .NET 集合。

[Guid] 屬性在 COM 中至關重要,它標識一個介面。這是由 guid 而不是名稱完成的,以確保它在不同程序員編寫的多個應用程序中是唯一的。.NET 也有這個,但是使用了一個名稱來使人類更容易使用。“System.Collections.IEnumerable,mscorlib,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089”。

通用版本 IEnumerable<> 沒有 [Guid]。泛型與 COM 不兼容。這些天來這並不重要,周圍沒有太多可見的 COM,其中大部分已經被友好的 .NET 類包裝了。但在 Windows 中仍然非常核心,尤其是在全新的 WinRT(又名 Metro,又名 Modern UI,又名 UWP)中。您也不直接使用它,這使 COM 有點像 Windows 程式的彙編語言。

引用自:https://stackoverflow.com/questions/1067538