x:ClassModifier-Anweisung

Ändert das XAML-Kompilierungsverhalten, wenn auch x:Class angegeben wird. Anstatt also eine partielle Klasse (class) zu erstellen, die über die Standardzugriffsebene Public verfügt, wird die bereitgestellte Instanz von x:Class mit der Zugriffsebene NotPublic erstellt. Dieses Verhalten wirkt sich auf die Zugriffsebene für die Klasse in den generierten Assemblys aus.

Verwendung von XAML-Attributen

<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
   ...
</object>

XAML-Werte

Wert BESCHREIBUNG
NotPublic Die genaue Zeichenfolge, die zur Angabe von TypeAttributes.Public bzw. TypeAttributes.NotPublic übergeben werden muss, variiert je nach verwendeter CodeBehind-Programmiersprache. Siehe Hinweise.

Abhängigkeiten

x:Class muss ebenfalls für das gleiche Element bereitgestellt werden, und dieses Element muss das Stammelement auf einer Seite sein. Weitere Informationen finden Sie unter [MS-XAML] Abschnitt 6.3.1.8.

Hinweise

Der Wert von x:ClassModifier in .NET-XAML-Diensten variiert je nach Programmiersprache. Welche Zeichenfolge zu verwenden ist, hängt davon ab, wie die jeweilige Sprache CodeDomProvider implementiert, sowie von den Typkonvertern, die sie zurückgibt, um die Bedeutungen für TypeAttributes.Public und TypeAttributes.NotPublic zu definieren, und davon, ob diese Sprache zwischen Groß- und Kleinschreibung unterscheidet.

  • Für C# ist die Zeichenfolge, die zur Bezeichnung von TypeAttributes.NotPublic übergeben werden muss, internal.

  • Bei Microsoft Visual Basic .NET ist die Zeichenfolge, die zur Bezeichnung von TypeAttributes.NotPublic übergeben werden muss, Friend.

  • Bei C++ bzw. bei der CLI gibt es keine Ziele, die das Kompilieren von XAML unterstützen. Daher ist der zu übergebene Wert nicht spezifiziert.

Sie können auch TypeAttributes.Public (public in C# bzw. Public in Visual Basic) angeben. TypeAttributes.Public wird jedoch nur selten angegeben, da TypeAttributes.Public bereits das Standardverhalten ist.

Andere Werte mit entsprechenden Einschränkungen auf Benutzercodezugriffsebene (etwa private in C#) sind für x:ClassModifier nicht relevant, da geschachtelte Klassenverweise in XAML nicht unterstützt werden und der TypeAttributes.NotPublic-Modifizierer somit die gleiche Wirkung hat.

Sicherheitshinweise

Die in x:ClassModifier deklarierte Zugriffsebene unterliegt weiterhin der Interpretation durch bestimmte Frameworks und deren Funktionen. WPF enthält Funktionen zum Laden und Instanziieren von Typen, bei denen x:ClassModifier auf internalfestgelegt ist, wenn auf diese Klasse von einer WPF-Ressource aus über einen Paket-URI-Verweis verwiesen wird. Aufgrund dieses Falls und anderer ähnlicher Fälle, die ggf. von anderen Frameworks implementiert werden, sollten Sie sich bei der Blockierung aller möglichen Instanziierungsversuche nicht ausschließlich auf x:ClassModifier verlassen.

Weitere Informationen