x:ClassModifier – direktiva
Upraví chování kompilace XAML při poskytnutí x:Class
. Konkrétně se místo vytvoření částečného class
, který má úroveň přístupu Public
(výchozí), vytvoří se poskytnutá x:Class
s úrovní přístupu NotPublic
. Toto chování ovlivňuje úroveň přístupu pro třídu ve vygenerovaných sestavení.
Použití atributu XAML
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
Hodnoty XAML
Hodnota | Popis |
---|---|
NotPublic | Přesný řetězec, který se má předat k určení TypeAttributes.Public a TypeAttributes.NotPublic se liší v závislosti na programovacím jazyce, který používáte. Viz poznámky. |
Závislosti
x:Class musí být také k dispozici ve stejném prvku a tento prvek musí být kořenovým prvkem na stránce. Další informace naleznete v [MS-XAML] Oddíl 6.3.1.8.
Poznámky
Hodnota x:ClassModifier
v využití služeb XAML .NET se liší podle programovacího jazyka. Řetězec, který se má použít, závisí na tom, jak každý jazyk implementuje své CodeDomProvider a převaděče typů, které vrací, definují významy pro TypeAttributes.Public a TypeAttributes.NotPublica zda je tento jazyk citlivý na malá a velká písmena.
V jazyce C# je řetězec, který se má předat k určení TypeAttributes.NotPublic,
internal
.Pro Rozhraní .NET jazyka Microsoft Visual Basic je řetězec, který se má předat k určení TypeAttributes.NotPublic,
Friend
.Pro C++/CLI neexistují žádné cíle, které podporují kompilaci XAML; hodnota, která se má předat, je proto nezadaná.
Můžete také zadat TypeAttributes.Public (public
v jazyce C#, Public
v jazyce Visual Basic); Zadání TypeAttributes.Public je však zřídka provedeno, protože TypeAttributes.Public je již výchozím chováním.
Jiné hodnoty s ekvivalentními omezeními na úrovni přístupu uživatelského kódu, například private
v jazyce C#, nejsou relevantní pro x:ClassModifier
, protože v kódu XAML nejsou podporované vnořené odkazy na třídy, a proto má TypeAttributes.NotPublic modifikátor stejný účinek.
Poznámky k zabezpečení
Úroveň přístupu deklarovaná v x:ClassModifier
je stále předmětem interpretace podle konkrétních architektur a jejich schopností. WPF zahrnuje funkce pro načítání a vytváření instancí typů, kde x:ClassModifier
je internal
, pokud se na tuto třídu odkazuje z prostředku WPF prostřednictvím odkazu na identifikátor URI balíčku. V důsledku tohoto případu a případně jiných, jako je implementovaná jinými architekturami, nespoléhejte výhradně na x:ClassModifier
blokovat všechny možné pokusy o vytvoření instance.
Viz také
- direktivy x:class
- Code-Behind a XAML v WPF
- direktivy x:FieldModifier
- zabezpečení
(WPF) - typy migrované z WPF do System.Xaml
.NET Desktop feedback