x:ClassModifier 指示詞
同時提供 x:Class
時,修改 XAML 編譯行為。 具體來說,提供的 x:Class
會使用 NotPublic
存取層級建立提供的 x:Class
,而不是建立具有 Public
存取層級的部分 class
。 此行為會影響所產生元件中 類別的存取層級。
XAML 屬性使用方式
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML 值
價值 | 描述 |
---|---|
NotPublic | 要傳遞以指定 TypeAttributes.Public 與 TypeAttributes.NotPublic 的確切字串會根據您使用的程式代碼後置程式設計語言而有所不同。 請參閱。 |
依賴
x:Class 也必須在相同的元素上提供,而且該項目必須是頁面上的根元素。 如需詳細資訊,請參閱 [MS-XAML] 第 6.3.1.8 節。
言論
.NET XAML 服務使用方式中 x:ClassModifier
的值會因程式設計語言而異。 要使用的字串取決於每個語言如何實作其 CodeDomProvider,以及它傳回的類型轉換器來定義 TypeAttributes.Public 和 TypeAttributes.NotPublic的意義,以及該語言是否區分大小寫。
針對 C#,要傳遞至指定 TypeAttributes.NotPublic 的字串會
internal
。對於 Microsoft Visual Basic .NET,要傳遞以指定 TypeAttributes.NotPublic 的字串會
Friend
。針對 C++/CLI,沒有支援編譯 XAML 的目標;因此,要傳遞的值未指定。
您也可以在 C# 中指定 TypeAttributes.Public (public
,在 Visual Basic 中指定 Public
):不過,因為 TypeAttributes.Public 已經是預設行為,因此不常指定 TypeAttributes.Public。
其他具有對等使用者程式代碼存取層級限制的值,例如 C# 中的 private
,與 x:ClassModifier
無關,因為 XAML 不支援巢狀類別參考,因此 TypeAttributes.NotPublic 修飾詞的效果相同。
安全性注意事項
x:ClassModifier
中所宣告的存取層級仍受限於特定架構及其功能的解釋。 WPF 包含載入和具現化 x:ClassModifier
internal
的功能,如果透過套件 URI 參考從 WPF 資源參考該類別。 由於此案例和可能由其他架構實作的其他人,請勿完全依賴 x:ClassModifier
來封鎖所有可能的具現化嘗試。
另請參閱
- x:Class 指示詞
- WPF 中的
Code-Behind 和 XAML - x:FieldModifier 指示詞
- 安全性 (WPF)
- 從 WPF 移轉至 System.Xaml 的
類型