TypeAttributes 列挙型


型属性を指定します。Specifies type attributes.

この列挙型には FlagsAttribute 属性があり、メンバー値ではビットごとの組み合わせを使用できます。

public enum class TypeAttributes
public enum TypeAttributes
type TypeAttributes = 
Public Enum TypeAttributes


Abstract 128

型が抽象的であることを示します。Specifies that the type is abstract.

AnsiClass 0

LPTSTR は ANSI として解釈されます。LPTSTR is interpreted as ANSI.

AutoClass 131072

LPTSTR は自動的に解釈されます。LPTSTR is interpreted automatically.

AutoLayout 0

クラス フィールドが共通言語ランタイムによって自動的にレイアウトされることを指定します。Specifies that class fields are automatically laid out by the common language runtime.

BeforeFieldInit 1048576

型の静的なメソッドを呼び出しても、システムによって型が強制的に初期化されることはないことを指定します。Specifies that calling static methods of the type does not force the system to initialize the type.

Class 0

型がクラスであることを示します。Specifies that the type is a class.

ClassSemanticsMask 32

クラスのセマンティクス情報を指定します。現在のクラスはコンテキスト バインド クラスです (そうでない場合は非バインド クラス)。Specifies class semantics information; the current class is contextful (else agile).

CustomFormatClass 196608

LPSTR は、NotSupportedException のスローを含め、実装に固有の手段で解釈されます。LPSTR is interpreted by some implementation-specific means, which includes the possibility of throwing a NotSupportedException. Microsoft 実装の .NET Framework.NET Framework では使用されません。Not used in the Microsoft implementation of the .NET Framework.NET Framework.

CustomFormatMask 12582912

標準以外のエンコーディング情報を取得し、ネイティブな相互運用性を実現するために使用されます。Used to retrieve non-standard encoding information for native interop. 2 ビットの値が持つ意味は指定されていません。The meaning of the values of these 2 bits is unspecified. Microsoft 実装の .NET Framework.NET Framework では使用されません。Not used in the Microsoft implementation of the .NET Framework.NET Framework.

ExplicitLayout 16

クラス フィールドが指定されたオフセットでレイアウトされることを指定します。Specifies that class fields are laid out at the specified offsets.

HasSecurity 262144

型にセキュリティが関連付けられています。Type has security associate with it.

Import 4096

クラスまたはインターフェイスが別のモジュールからインポートされることを指定します。Specifies that the class or interface is imported from another module.

Interface 32

型がインターフェイスであることを示します。Specifies that the type is an interface.

LayoutMask 24

クラス レイアウト情報を指定します。Specifies class layout information.

NestedAssembly 5

クラスが、アセンブリ参照可能範囲の中にあるため、そのアセンブリだけからアクセスできることを指定します。Specifies that the class is nested with assembly visibility, and is thus accessible only by methods within its assembly.

NestedFamANDAssem 6

クラスをアセンブリおよびファミリの参照可能範囲内に指定します。この結果、そのファミリとアセンブリの積集合にあるメソッドだけからアクセスできます。Specifies that the class is nested with assembly and family visibility, and is thus accessible only by methods lying in the intersection of its family and assembly.

NestedFamily 4

クラスをファミリ参照可能範囲内に指定します。この結果、そのファミリの独自の型および派生型のメソッドだけからアクセスできます。Specifies that the class is nested with family visibility, and is thus accessible only by methods within its own type and any derived types.

NestedFamORAssem 7

クラスをファミリまたはアセンブリの参照可能範囲内に指定します。この結果、そのファミリとアセンブリの和集合にあるメソッドだけからアクセスできます。Specifies that the class is nested with family or assembly visibility, and is thus accessible only by methods lying in the union of its family and assembly.

NestedPrivate 3

クラスが、プライベートな参照可能範囲の中にあることを指定します。Specifies that the class is nested with private visibility.

NestedPublic 2

クラスが、パブリックな参照可能範囲の中にあることを指定します。Specifies that the class is nested with public visibility.

NotPublic 0

クラスがパブリックでないことを指定します。Specifies that the class is not public.

Public 1

クラスがパブリックであることを指定します。Specifies that the class is public.

ReservedMask 264192

ランタイムで使用するために予約された属性。Attributes reserved for runtime use.

RTSpecialName 2048

ランタイムは名前のエンコード方式を確認する必要があります。Runtime should check name encoding.

Sealed 256

クラスが具象クラスで、拡張できないことを指定します。Specifies that the class is concrete and cannot be extended.

SequentialLayout 8

クラス フィールドが、メタデータに生成される順序で連続的にレイアウトされることを指定します。Specifies that class fields are laid out sequentially, in the order that the fields were emitted to the metadata.

Serializable 8192

クラスをシリアル化できることを指定します。Specifies that the class can be serialized.

SpecialName 1024

名前で説明するという方法で、クラスが特別であることを指定します。Specifies that the class is special in a way denoted by the name.

StringFormatMask 196608

ネイティブな相互運用性を得るための文字列情報の取得に使用されます。Used to retrieve string information for native interoperability.

UnicodeClass 65536

LPTSTR は UNICODE として解釈されます。LPTSTR is interpreted as UNICODE.

VisibilityMask 7

型の参照可能範囲情報を指定します。Specifies type visibility information.

WindowsRuntime 16384

Windows ランタイムWindows Runtime タイプを指定します。Specifies a Windows ランタイムWindows Runtime type.

次の例では、さまざまなAttributes型をType表すオブジェクトのプロパティの値を取得し、個々の属性フラグが設定されているかどうかを確認します。The following example retrieves the value of the Attributes property for Type objects that represent a number of different types, and then determines whether individual attribute flags have been set.

using System;
using System.Reflection;

internal struct S
    public int X;

public abstract class Example
    protected sealed class NestedClass {}

    public interface INested {}

    public static void Main()
        // Create an array of types.
        Type[] types = { typeof(Example), typeof(NestedClass),
                         typeof(INested), typeof(S) };

        foreach (var t in types) 
           Console.WriteLine("Attributes for type {0}:", t.Name);

           TypeAttributes attr = t.Attributes;

           // To test for visibility attributes, you must use the visibility mask.
           TypeAttributes visibility = attr & TypeAttributes.VisibilityMask;
           switch (visibility)
               case TypeAttributes.NotPublic:
                   Console.WriteLine("   ...is not public");
               case TypeAttributes.Public:
                   Console.WriteLine("   ...is public");
               case TypeAttributes.NestedPublic:
                   Console.WriteLine("   ...is nested and public");
               case TypeAttributes.NestedPrivate:
                   Console.WriteLine("   ...is nested and private");
               case TypeAttributes.NestedFamANDAssem:
                   Console.WriteLine("   ...is nested, and inheritable only within the assembly" +
                      "\n         (cannot be declared in C#)");
               case TypeAttributes.NestedAssembly:
                   Console.WriteLine("   ...is nested and internal");
               case TypeAttributes.NestedFamily:
                   Console.WriteLine("   ...is nested and protected");
               case TypeAttributes.NestedFamORAssem:
                   Console.WriteLine("   ...is nested and protected internal");

           // Use the layout mask to test for layout attributes.
           TypeAttributes layout = attr & TypeAttributes.LayoutMask;
           switch (layout)
               case TypeAttributes.AutoLayout:
                   Console.WriteLine("   ...is AutoLayout");
               case TypeAttributes.SequentialLayout:
                   Console.WriteLine("   ...is SequentialLayout");
               case TypeAttributes.ExplicitLayout:
                   Console.WriteLine("   ...is ExplicitLayout");

           // Use the class semantics mask to test for class semantics attributes.
           TypeAttributes classSemantics = attr & TypeAttributes.ClassSemanticsMask;
           switch (classSemantics)
               case TypeAttributes.Class:
                   if (t.IsValueType)
                       Console.WriteLine("   ...is a value type");
                       Console.WriteLine("   ...is a class");
               case TypeAttributes.Interface:
                   Console.WriteLine("   ...is an interface");

           if ((attr & TypeAttributes.Abstract) != 0)
               Console.WriteLine("   ...is abstract");

           if ((attr & TypeAttributes.Sealed) != 0)
               Console.WriteLine("   ...is sealed");
// The example displays the following output:
// Attributes for type Example:
//    ...is public
//    ...is AutoLayout
//    ...is a class
//    ...is abstract

// Attributes for type NestedClass:
//    ...is nested and protected
//    ...is AutoLayout
//    ...is a class
//    ...is sealed

// Attributes for type INested:
//    ...is nested and public
//    ...is AutoLayout
//    ...is an interface
//    ...is abstract

// Attributes for type S:
//    ...is not public
//    ...is SequentialLayout
//    ...is a value type
//    ...is sealed
Imports System.Reflection

Friend Structure S
    Public X As Integer
End Structure

Public MustInherit Class Example
    Protected NotInheritable Class NestedClass
    End Class

    Public Interface INested
    End Interface

    Public Shared Sub Main()
        ' Create an array of types.
        Dim types() As Type = { GetType(Example), GetType(NestedClass),
                                GetType(INested), GetType(S) }

        For Each t In types
           Console.WriteLine("Attributes for type {0}:", t.Name)

           Dim attr As TypeAttributes = t.Attributes

           ' Use the visibility mask to test for visibility attributes.
           Dim visibility As TypeAttributes = attr And TypeAttributes.VisibilityMask
           Select Case visibility
               Case TypeAttributes.NotPublic:
                   Console.WriteLine("   ...is not Public")
               Case TypeAttributes.Public:
                   Console.WriteLine("   ...is Public")
               Case TypeAttributes.NestedPublic:
                   Console.WriteLine("   ...is nested and Public")
               Case TypeAttributes.NestedPrivate:
                   Console.WriteLine("   ...is nested and Private")
               Case TypeAttributes.NestedFamANDAssem:
                   Console.WriteLine("   ...is nested, and inheritable only within the assembly" & _
                      vbLf & "         (cannot be declared in Visual Basic)")
               Case TypeAttributes.NestedAssembly:
                   Console.WriteLine("   ...is nested and Friend")
               Case TypeAttributes.NestedFamily:
                   Console.WriteLine("   ...is nested and Protected")
               Case TypeAttributes.NestedFamORAssem:
                   Console.WriteLine("   ...is nested and Protected Friend")
           End Select

           ' Use the layout mask to test for layout attributes.
           Dim layout As TypeAttributes = attr And TypeAttributes.LayoutMask
           Select Case layout
               Case TypeAttributes.AutoLayout:
                   Console.WriteLine("   ...is AutoLayout")
               Case TypeAttributes.SequentialLayout:
                   Console.WriteLine("   ...is SequentialLayout")
               Case TypeAttributes.ExplicitLayout:
                   Console.WriteLine("   ...is ExplicitLayout")
           End Select

           ' Use the class semantics mask to test for class semantics attributes.
           Dim classSemantics As TypeAttributes = attr And TypeAttributes.ClassSemanticsMask
           Select Case classSemantics
               Case TypeAttributes.Class:
                   If t.IsValueType Then
                       Console.WriteLine("   ...is a value type")
                       Console.WriteLine("   ...is a class")
                   End If
               Case TypeAttributes.Interface:
                   Console.WriteLine("   ...is an interface")
           End Select

           If 0 <> (attr And TypeAttributes.Abstract) Then _
               Console.WriteLine("   ...is MustInherit")

           If 0 <> (attr And TypeAttributes.Sealed) Then _
               Console.WriteLine("   ...is NotInheritable")
    End Sub
End Class
' The example displays the following output:
'       Attributes for type Example:
'          ...is Public
'          ...is AutoLayout
'          ...is a class
'          ...is MustInherit
'       Attributes for type NestedClass:
'          ...is nested and Protected
'          ...is AutoLayout
'          ...is a class
'          ...is NotInheritable
'       Attributes for type INested:
'          ...is nested and Public
'          ...is AutoLayout
'          ...is an interface
'          ...is MustInherit
'       Attributes for type S:
'          ...is not Public
'          ...is SequentialLayout
'          ...is a value type
'          ...is NotInheritable


TypeAttributes列挙体のメンバーの中には、相互に排他的な属性のセットを表すマスクがあります。Some of the members of the TypeAttributes enumeration are masks that represent a set of mutually exclusive attributes. たとえばVisibilityMask 、メンバーには、、 NotPublicPublic NestedPrivateNestedPublic 、、NestedFamily、 、およびNestedFamORAssemの各メンバーが含まれます。 NestedFamANDAssem NestedAssemblyFor example, the VisibilityMask member includes the NotPublic, Public, NestedPublic, NestedPrivate, NestedFamily, NestedAssembly, NestedFamANDAssem, and NestedFamORAssem members. 各属性セットには、基になる値が0であるメンバーがAnd含まれているため、最初にSystem.Reflection.TypeAttributes 、などType.Attributesのプロパティから取得した特定の値を使用してマスクの値を指定する必要があります。Because each attribute set includes a member whose underlying value is zero, you should first And the value of the mask with the specific System.Reflection.TypeAttributes value retrieved from a property such as Type.Attributes. 次の表に、マスクとそれらに含まれる個々のメンバーの一覧を示します。The following table lists the masks and the individual members that they include:

マスクMask 含まれているバージョンIncludes
VisibilityMaskVisibilityMask NotPublicNotPublic
LayoutMaskLayoutMask AutoLayoutAutoLayout
ClassSemanticsMaskClassSemanticsMask クラスClass
StringFormatMaskStringFormatMask AnsiClassAnsiClass
CustomFormatMaskCustomFormatMask メンバーがありません。No members.

この列挙子クラスのメンバーは、corhdr .h ファイルで定義されている CorTypeAttr 列挙子と一致します。The members of this enumerator class match the CorTypeAttr enumerator as defined in the corhdr.h file.