x:Arahan ClassModifier
Memodifikasi perilaku kompilasi XAML ketika x:Class
juga disediakan. Secara khusus, alih-alih membuat parsial class
yang memiliki Public
tingkat akses (default), yang disediakan x:Class
dibuat dengan NotPublic
tingkat akses. Perilaku ini memengaruhi tingkat akses untuk kelas dalam rakitan yang dihasilkan.
Penggunaan Atribut XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Nilai XAML
Nilai | Deskripsi |
---|---|
NotPublic | String yang tepat untuk diteruskan untuk menentukan TypeAttributes.Public versus TypeAttributes.NotPublic bervariasi, tergantung pada bahasa pemrograman code-behind yang Anda gunakan. Lihat Keterangan. |
Dependensi
x:Class juga harus disediakan pada elemen yang sama, dan elemen tersebut harus menjadi elemen akar dalam halaman. Untuk informasi selengkapnya, lihat [MS-XAML] Bagian 6.3.1.8.
Keterangan
Nilai x:ClassModifier
dalam penggunaan Layanan .NET XAML bervariasi menurut bahasa pemrograman. String yang akan digunakan tergantung pada bagaimana setiap bahasa mengimplementasikannya CodeDomProvider dan pengonversi jenis yang dikembalikannya untuk menentukan arti untuk TypeAttributes.Public dan TypeAttributes.NotPublic, dan apakah bahasa tersebut peka huruf besar/kecil.
Untuk C#, string yang akan diteruskan ke yang ditunjuk TypeAttributes.NotPublic adalah
internal
.Untuk Microsoft Visual Basic .NET, string yang akan diteruskan ke yang ditunjuk TypeAttributes.NotPublic adalah
Friend
.Untuk C++/CLI, tidak ada target yang mendukung kompilasi XAML; oleh karena itu, nilai yang akan diteruskan tidak ditentukan.
Anda juga dapat menentukan TypeAttributes.Public (public
dalam C#, Public
di Visual Basic); namun, menentukan TypeAttributes.Public jarang dilakukan karena TypeAttributes.Public sudah menjadi perilaku default.
Nilai lain dengan pembatasan tingkat akses kode pengguna yang setara, seperti private
di C#, tidak relevan karena x:ClassModifier
referensi kelas berlapis tidak didukung di XAML, dan oleh karena itu, pengubah TypeAttributes.NotPublic memiliki efek yang sama.
Catatan Keamanan
Tingkat akses seperti yang dinyatakan dalam x:ClassModifier
masih tunduk pada interpretasi oleh kerangka kerja tertentu dan kemampuannya. WPF mencakup kemampuan untuk memuat dan membuat instans jenis di mana x:ClassModifier
adalah internal
, jika kelas tersebut dirujuk dari sumber daya WPF melalui referensi URI paket. Sebagai konsekuensi dari kasus ini dan berpotensi orang lain seperti yang diimplementasikan oleh kerangka kerja lain, jangan mengandalkan secara x:ClassModifier
eksklusif untuk memblokir semua kemungkinan upaya instansiasi.
Baca juga
.NET Desktop feedback