Udostępnij za pośrednictwem


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ż