x:ClassModifier-direktiv
Ändrar XAML-kompileringsbeteendet när x:Class
också tillhandahålls. I stället för att skapa en partiell class
som har en Public
åtkomstnivå (standard) skapas den angivna x:Class
med en NotPublic
åtkomstnivå. Det här beteendet påverkar åtkomstnivån för klassen i de genererade sammansättningarna.
XAML-attributanvändning
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML-värden
Värde | Beskrivning |
---|---|
NotPublic | Den exakta sträng som ska skickas för att ange TypeAttributes.Public jämfört med TypeAttributes.NotPublic varierar beroende på vilket programmeringsspråk som du använder bakom koden. Se Kommentarer. |
Beroenden
x:Class måste också anges på samma element och det elementet måste vara rotelementet på en sida. Mer information finns i [MS-XAML] avsnitt 6.3.1.8.
Anmärkningar
Värdet för x:ClassModifier
i .NET XAML Services-användning varierar beroende på programmeringsspråk. Vilken sträng som ska användas beror på hur varje språk implementerar sina CodeDomProvider och vilka typkonverterare det returnerar för att definiera innebörden för TypeAttributes.Public och TypeAttributes.NotPublicoch om språket är skiftlägeskänsligt.
För C#är strängen som ska skickas för att ange TypeAttributes.NotPublic
internal
.För Microsoft Visual Basic .NET är strängen som ska skickas för att ange TypeAttributes.NotPublic
Friend
.För C++/CLI finns inga mål som stöder kompilering av XAML. Därför är det värde som ska överföras ospecificerat.
Du kan också ange TypeAttributes.Public (public
i C#, Public
i Visual Basic); Att ange TypeAttributes.Public görs dock sällan eftersom TypeAttributes.Public redan är standardbeteendet.
Andra värden med motsvarande åtkomstnivåbegränsningar för användarkod, till exempel private
i C#, är inte relevanta för x:ClassModifier
eftersom kapslade klassreferenser inte stöds i XAML, och därför har TypeAttributes.NotPublic-modifieraren samma effekt.
Säkerhetsanteckningar
Åtkomstnivån som deklareras i x:ClassModifier
är fortfarande föremål för tolkning av vissa ramverk och deras funktioner. WPF innehåller funktioner för att läsa in och instansiera typer där x:ClassModifier
är internal
, om den klassen refereras från en WPF-resurs via en pack-URI-referens. Som en följd av det här fallet och potentiellt andra som det implementeras av andra ramverk, förlitar sig inte uteslutande på x:ClassModifier
för att blockera alla möjliga instansieringsförsök.
Se även
.NET Desktop feedback