x:ClassModifier 指示詞
同時提供 時 x:Class
,修改 XAML 編譯行為。 具體來說,提供的 x:Class
不是建立 class
具有 Public
存取層級的部分,而是使用存取層級來 NotPublic
建立。 此行為會影響所產生元件中 類別的存取層級。
XAML Attribute Usage
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML 值
值 | Description |
---|---|
NotPublic | 要傳遞以指定 TypeAttributes.Public 與 的 TypeAttributes.NotPublic 確切字串會根據您使用的程式碼後置程式設計語言而有所不同。 請參閱<備註>。 |
相依性
x:Class 也必須在相同的元素上提供,而且該元素必須是頁面上的根項目。 如需詳細資訊,請參閱
備註
.NET XAML 服務使用方式中的 值 x:ClassModifier
會因程式設計語言而異。 要使用的字串取決於每個語言如何實作其 CodeDomProvider 和 型別轉換器,以定義 TypeAttributes.Public 和 TypeAttributes.NotPublic 的意義,以及該語言是否區分大小寫。
針對 C#,要傳遞至指定之 TypeAttributes.NotPublic 字串為
internal
。針對 Microsoft Visual Basic .NET,要傳遞以指定 TypeAttributes.NotPublic 的字串為
Friend
。針對 C++/CLI,沒有支援編譯 XAML 的目標;因此,要傳遞的值未指定。
您也可以在 Visual Basic 中指定 TypeAttributes.Public ( public
在 C# Public
中,在 Visual Basic 中),不過,因為 TypeAttributes.Public 已經是預設行為,因此不常指定 TypeAttributes.Public 。
其他具有對等使用者程式碼存取層級限制的值,例如 private
在 C# 中並不相關 x:ClassModifier
,因為 XAML 不支援巢狀類別參考, TypeAttributes.NotPublic 因此修飾詞的效果相同。
安全性注意事項
中所 x:ClassModifier
宣告的存取層級仍受限於特定架構及其功能的解釋。 如果透過套件 URI 參考從 WPF 資源參考該類別參考,WPF 包含載入和具現化型別的功能,其中 x:ClassModifier
是 internal
。 由於此案例和可能由其他架構實作的其他人,請勿完全依賴 x:ClassModifier
來封鎖所有可能的具現化嘗試。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應