x:ClassModifier ディレクティブ
x:Class
も指定されている場合に XAML コンパイル動作を変更します。 具体的には、Public
アクセス レベル (既定) を持つ部分的な class
を作成する代わりに、指定された x:Class
が NotPublic
アクセス レベルで作成されます。 この動作は、生成されたアセンブリ内のクラスのアクセス レベルに影響します。
XAML 属性の使用法
<object x:Class="namespace.classname" x:ClassModifier="NotPublic">
...
</object>
XAML 値
価値 | 形容 |
---|---|
NotPublic の |
TypeAttributes.Public と TypeAttributes.NotPublic を指定するために渡す正確な文字列は、使用する分離コード プログラミング言語によって異なります。 「解説」を参照してください。 |
依存 関係
x:Class も同じ要素に指定する必要があり、その要素はページ内のルート要素である必要があります。 詳細については、「[MS-XAML] セクション 6.3.1.8を参照してください。
備考
.NET XAML サービスの使用における x:ClassModifier
の値は、プログラミング言語によって異なります。 使用する文字列は、各言語が CodeDomProvider を実装する方法と、TypeAttributes.Public と TypeAttributes.NotPublicの意味を定義するために返される型コンバーター、およびその言語で大文字と小文字が区別されるかどうかによって異なります。
C# の場合、TypeAttributes.NotPublic を指定するために渡す文字列は
internal
。Microsoft Visual Basic .NET の場合、TypeAttributes.NotPublic を指定するために渡す文字列は
Friend
。C++/CLI の場合、XAML のコンパイルをサポートするターゲットは存在しません。したがって、渡す値は指定されていません。
TypeAttributes.Public (C# ではpublic
、Visual Basic では Public
) を指定することもできます。ただし、TypeAttributes.Public は既に既定の動作であるため、TypeAttributes.Public の指定は頻繁に行われません。
C# の private
など、同等のユーザー コード アクセス レベルの制限を持つ他の値は、入れ子になったクラス参照が XAML でサポートされていないため、x:ClassModifier
には関係ないため、TypeAttributes.NotPublic 修飾子は同じ効果を持ちます。
セキュリティに関する注意事項
x:ClassModifier
で宣言されているアクセス レベルは、特定のフレームワークとその機能による解釈の対象となります。 WPF には、x:ClassModifier
が internal
されている型を読み込んでインスタンス化する機能が含まれています(そのクラスがパック URI 参照を介して WPF リソースから参照されている場合)。 この場合の結果として、他のフレームワークによって実装される可能性のある他のフレームワークでは、インスタンス化の試行をすべてブロックするために x:ClassModifier
だけに依存しないでください。
関連項目
- x:Class ディレクティブ
- WPF での
Code-Behind と XAML - x:FieldModifier ディレクティブ
- セキュリティ (WPF)
- WPF から System.Xaml に移行された 型
.NET Desktop feedback