x:ClassModifier, dyrektywa
Modyfikuje zachowanie kompilacji XAML podczas x:Class
. W szczególności zamiast tworzyć częściowe class
z poziomem dostępu Public
(ustawieniem domyślnym) tworzony jest podany x:Class
z poziomem dostępu NotPublic
. To zachowanie wpływa na poziom dostępu dla klasy w wygenerowanych zestawach.
Użycie atrybutu XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Wartości XAML
Wartość | Opis |
---|---|
NotPublic | Dokładny ciąg do przekazania w celu określenia TypeAttributes.Public a TypeAttributes.NotPublic różni się w zależności od używanego języka programowania kodu. Zobacz uwagi. |
Zależności
x:Klasa musi być również podana w tym samym elemecie, a ten element musi być elementem głównym na stronie. Aby uzyskać więcej informacji, zobacz [MS-XAML] Sekcja 6.3.1.8.
Uwagi
Wartość x:ClassModifier
w usługach XAML platformy .NET różni się w zależności od języka programowania. Ciąg do użycia zależy od tego, jak każdy język implementuje jego CodeDomProvider, a konwertery typów, które zwraca, aby zdefiniować znaczenie dla TypeAttributes.Public i TypeAttributes.NotPublic, i czy ten język jest uwzględniany wielkość liter.
W przypadku języka C#ciąg do przekazania w celu wyznaczenia TypeAttributes.NotPublic jest
internal
.W przypadku platformy .NET języka Microsoft Visual Basic ciąg do przekazania w celu wyznaczenia TypeAttributes.NotPublic jest
Friend
.W przypadku języka C++/CLI nie istnieją żadne obiekty docelowe, które obsługują kompilowanie kodu XAML; dlatego wartość do przekazania jest nieokreślona.
Można również określić TypeAttributes.Public (public
w języku C#, Public
w Visual Basic); jednak określenie TypeAttributes.Public jest rzadko wykonywane, ponieważ TypeAttributes.Public jest już zachowaniem domyślnym.
Inne wartości z równoważnymi ograniczeniami poziomu dostępu kodu użytkownika, takimi jak private
w języku C#, nie są istotne dla x:ClassModifier
, ponieważ odwołania do klas zagnieżdżonych nie są obsługiwane w języku XAML, a zatem modyfikator TypeAttributes.NotPublic ma taki sam efekt.
Uwagi dotyczące zabezpieczeń
Poziom dostępu, zgodnie z deklaracją w x:ClassModifier
, nadal podlega interpretacji przez określone struktury i ich możliwości. WPF obejmuje możliwości ładowania i tworzenia wystąpień typów, w których x:ClassModifier
jest internal
, jeśli ta klasa jest przywoływali z zasobu WPF za pośrednictwem odwołania identyfikatora URI pakietu. W wyniku tego przypadku i potencjalnie innych osób, takich jak zaimplementowane przez inne struktury, nie polegaj wyłącznie na x:ClassModifier
, aby zablokować wszystkie możliwe próby utworzenia wystąpienia.
Zobacz też
- x:Class Directive
- Code-Behind i XAML w WPF
- x:FieldModifier, dyrektywa
-
Security (WPF) - typy migrowane z WPF do System.Xaml
.NET Desktop feedback