x:ClassModifier 指示詞
修改同時提供 x:Class 時的 XAML 編譯行為。 具體而言,不建立部分 class (具有Public存取級別 (預設值)),而是以 NotPublic 存取級別建立提供的 x:Class。 這個行為影響產生組件中的類別存取層級。
XAML 屬性使用方式
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML 值
NotPublic |
依據使用的程式碼後置程式設計語言而定,用於指定 TypeAttributes.Public 與 TypeAttributes.NotPublic 的確切傳遞字串都會有所不同。 請參閱「備註」。 |
相依性
在相同項目上也必須提供 x:Class,而且該項目必須是頁面的根項目。 如需詳細資訊,請參閱 [MS-XAML] 4.3.1.8 章 (英文)。
備註
.NET Framework XAML 服務使用方式中的 x:ClassModifier 值會隨程式設計語言而改變。 每個語言實作其 CodeDomProvider 的方式、它所傳回用來定義 TypeAttributes.Public 和 TypeAttributes.NotPublic 意義的型別轉換子,以及該語言是否區分大小寫,都會決定所要使用的字串。
對於 C#,用於指定 TypeAttributes.NotPublic 的傳遞字串是 internal。
對於 Microsoft Visual Basic .NET,用於指定 TypeAttributes.NotPublic 的傳遞字串是 Friend。
針對 C++/CLI,沒有支援編譯 XAML 的目標存在;因此未指定要傳遞的值。
您也可以指定 TypeAttributes.Public (C# 中的 public、Visual Basic 中的 Public),但是指定 TypeAttributes.Public 並不常見,因為 TypeAttributes.Public 已經是預設的行為。
其他具有對等使用者程式碼存取層級限制 (例如,C# 中的 private) 與 x:ClassModifier 並不相關,因為 XAML 中並不支援巢狀類別參考,因此 TypeAttributes.NotPublic 修飾詞具有相同的作用。
安全性提示
在 x:ClassModifier 中所宣告的存取層級,依然取決於特定架構的解譯及其功能。 如果是透過 pack URI 從 WPF 資源參考該類別,WPF 就包括載入和執行個體化其 x:ClassModifier 為 internal 之型別的能力。 因為此情況與其他框架實作之相似情況的緣故,請勿僅只依靠 x:ClassModifier 來封鎖所有可能的執行個體化嘗試。