x:ClassModifier-Direktive
Ändert das XAML-Kompilierungsverhalten, wenn x:Class
ebenfalls bereitgestellt wird. Anstatt eine partielle class
mit einer Public
Zugriffsebene (Standardeinstellung) zu erstellen, wird die bereitgestellte x:Class
mit einer NotPublic
Zugriffsebene erstellt. Dieses Verhalten wirkt sich auf die Zugriffsebene für die Klasse in den generierten Assemblys aus.
XAML-Attributverwendung
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML-Werte
Wert | Beschreibung |
---|---|
NotPublic- | Die genaue Zeichenfolge, die übergeben werden soll, um TypeAttributes.Public im Vergleich zu TypeAttributes.NotPublic anzugeben, variiert je nach der verwendeten CodeBehind-Programmiersprache. Siehe Anmerkungen. |
Abhängigkeiten
x:Class muss auch für dasselbe Element bereitgestellt werden, und dieses Element muss das Stammelement auf einer Seite sein. Weitere Informationen finden Sie unter [MS-XAML] Section 6.3.1.8.
Bemerkungen
Der Wert der x:ClassModifier
in .NET XAML Services-Verwendung variiert je nach Programmiersprache. Die zu verwendende Zeichenfolge hängt davon ab, wie jede Sprache ihre CodeDomProvider implementiert, und die Typkonverter, die sie zurückgibt, um die Bedeutungen für TypeAttributes.Public und TypeAttributes.NotPubliczu definieren und ob die Groß-/Kleinschreibung beachtet wird.
Bei C# wird die Zeichenfolge, die übergeben werden soll, um TypeAttributes.NotPublic festzulegen,
internal
.Für Microsoft Visual Basic .NET ist die zu übergebende Zeichenfolge zum Festlegen TypeAttributes.NotPublic
Friend
.Für C++/CLI gibt es keine Ziele, die das Kompilieren von XAML unterstützen; daher ist der übergebene Wert nicht angegeben.
Sie können auch TypeAttributes.Public (public
in C#, Public
in Visual Basic) angeben); Die Angabe TypeAttributes.Public erfolgt jedoch selten, da TypeAttributes.Public bereits das Standardverhalten ist.
Andere Werte mit entsprechenden Einschränkungen auf Benutzercodezugriffsebene, z. B. private
in C#, sind für x:ClassModifier
nicht relevant, da geschachtelte Klassenverweise in XAML nicht unterstützt werden und daher der TypeAttributes.NotPublic Modifizierer die gleiche Auswirkung 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
internal
ist, wenn von einer WPF-Ressource über einen Pack-URI-Verweis auf diese Klasse verwiesen wird. Als Folge dieses Falls und potenziell auch andere, wie sie von anderen Frameworks implementiert werden, verlassen Sie sich nicht ausschließlich auf x:ClassModifier
, um alle möglichen Instanziierungsversuche zu blockieren.
Siehe auch
.NET Desktop feedback