Dela via


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.NotPublicinternal.

  • För Microsoft Visual Basic .NET är strängen som ska skickas för att ange TypeAttributes.NotPublicFriend.

  • 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