x:ClassModifier – direktiva
Upraví chování kompilace XAML, pokud x:Class
je také k dispozici. Konkrétně se místo vytvoření částečné class
Public
úrovně přístupu (výchozí) vytvoří poskytnutá x:Class
úroveň přístupu s NotPublic
úrovní přístupu. 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 versus TypeAttributes.NotPublic , se liší v závislosti na programovacím jazyce, který používáte za kódem. Viz poznámky. |
Závislosti
x:Class musí být také k dispozici ve stejném elementu a tento prvek musí být kořenovým prvkem na stránce. Další informace najdete v části [MS-XAML] 6.3.1.8.
Poznámky
Hodnota využití služeb XAML v .NET se liší podle programovacího x:ClassModifier
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.NotPublic, a zda je tento jazyk rozlišovat malá a velká písmena.
V jazyce C# je řetězec, který se má předat k určení TypeAttributes.NotPublic , je
internal
.Pro Rozhraní .NET jazyka Microsoft Visual Basic je řetězec, který se má předat k určení TypeAttributes.NotPublic , je
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), ale zadávání TypeAttributes.Public se provádí jen zřídka, 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í, x:ClassModifier
protože v kódu XAML nejsou podporované vnořené odkazy na třídy, a proto TypeAttributes.NotPublic má modifikátor stejný účinek.
Poznámky k zabezpečení
Úroveň přístupu, jak je deklarována v x:ClassModifier
, je stále předmětem interpretace podle konkrétních architektur a jejich schopností. WPF obsahuje funkce pro načítání a vytváření instancí typů, kde x:ClassModifier
je internal
, pokud je tato třída odkazována z prostředku WPF prostřednictvím odkazu na identifikátor URI balíčku. V důsledku tohoto případu a případně i jiných, jako je implementovaná jinými architekturami, nespoléhejte výhradně na x:ClassModifier
blokování všech možných pokusů o vytvoření instance.
Viz také
.NET Desktop feedback