Aracılığıyla paylaş


TypeAttributes Sabit listesi

Tanım

Tür özniteliklerini belirtir.

Bu sabit listesi, üyeleri için bit düzeyinde karşılaştırmayı destekler.

public enum class TypeAttributes
[System.Flags]
public enum TypeAttributes
[System.Flags]
[System.Serializable]
public enum TypeAttributes
[System.Flags]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum TypeAttributes
[<System.Flags>]
type TypeAttributes = 
[<System.Flags>]
[<System.Serializable>]
type TypeAttributes = 
[<System.Flags>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type TypeAttributes = 
Public Enum TypeAttributes
Devralma
TypeAttributes
Öznitelikler

Alanlar

Name Değer Description
AnsiClass 0

LPTSTR, ANSI olarak yorumlanır.

AutoLayout 0

Sınıf alanlarının ortak dil çalışma zamanı tarafından otomatik olarak düzenlendiğini belirtir.

Class 0

Türün bir sınıf olduğunu belirtir.

NotPublic 0

sınıfının genel olmadığını belirtir.

Public 1

sınıfının genel olduğunu belirtir.

NestedPublic 2

sınıfının genel görünürlükle iç içe geçmiş olduğunu belirtir.

NestedPrivate 3

sınıfının özel görünürlükle iç içe yerleştirildiğini belirtir.

NestedFamily 4

Sınıfın aile görünürlüğüyle iç içe olduğunu ve bu nedenle yalnızca kendi türündeki yöntemler ve türetilmiş türler tarafından erişilebilir olduğunu belirtir.

NestedAssembly 5

sınıfının derleme görünürlüğü ile iç içe olduğunu ve bu nedenle yalnızca derleme içindeki yöntemler tarafından erişilebilir olduğunu belirtir.

NestedFamANDAssem 6

Sınıfın derleme ve aile görünürlüğü ile iç içe olduğunu ve bu nedenle yalnızca ailesi ile derlemesinin kesişiminde yatan yöntemler tarafından erişilebilir olduğunu belirtir.

NestedFamORAssem 7

Sınıfın aile veya derleme görünürlüğü ile iç içe olduğunu ve bu nedenle yalnızca ailesi ve derlemesinin birleşiminde yatan yöntemler tarafından erişilebilir olduğunu belirtir.

VisibilityMask 7

Tür görünürlüğü bilgilerini belirtir.

SequentialLayout 8

Sınıf alanlarının, alanların meta veriler için yayıldığı sırayla sıralı olarak düzenlendiğini belirtir.

ExplicitLayout 16

Sınıf alanlarının belirtilen uzaklıklarda düzenlendiğini belirtir.

ExtendedLayout 24
LayoutMask 24

Sınıf düzeni bilgilerini belirtir.

ClassSemanticsMask 32

Sınıf semantiği bilgilerini belirtir; geçerli sınıf bağlamsaldır (aksi halde çeviktir).

Interface 32

Türün bir arabirim olduğunu belirtir.

Abstract 128

Türün soyut olduğunu belirtir.

Sealed 256

Sınıfın somut olduğunu ve genişletilemeyeceğini belirtir.

SpecialName 1024

sınıfının adıyla belirtilen şekilde özel olduğunu belirtir.

RTSpecialName 2048

Çalışma zamanı ad kodlamayı denetlemelidir.

Import 4096

Sınıfın veya arabirimin başka bir modülden içeri aktarıldığını belirtir.

Serializable 8192

Sınıfının serileştirilebileceğini belirtir.

WindowsRuntime 16384

Windows Çalışma Zamanı türünü belirtir.

UnicodeClass 65536

LPTSTR, UNICODE olarak yorumlanır.

AutoClass 131072

LPTSTR otomatik olarak yorumlanır.

CustomFormatClass 196608

LPSTR, bir NotSupportedExceptionoluşturma olasılığını içeren uygulamaya özgü bazı araçlar tarafından yorumlanır. .NET Framework'ün Microsoft uygulamasında kullanılmaz.

StringFormatMask 196608

Yerel birlikte çalışabilirlik için dize bilgilerini almak için kullanılır.

HasSecurity 262144

Tür ile ilişkili güvenlik var.

ReservedMask 264192

Çalışma zamanı kullanımı için ayrılmış öznitelikler.

BeforeFieldInit 1048576

Türün statik yöntemlerini çağırmanın sistemi türü başlatmaya zorlamadığını belirtir.

CustomFormatMask 12582912

Yerel birlikte çalışma için standart olmayan kodlama bilgilerini almak için kullanılır. Bu 2 bit değerlerin anlamı belirtilmemiştir. .NET Framework'ün Microsoft uygulamasında kullanılmaz.

Örnekler

Aşağıdaki örnek, bir dizi farklı türü temsil eden nesneler için Type özelliğinin değerini Attributes alır ve ardından tek tek öznitelik bayraklarının ayarlanıp ayarlanmadığını belirler.

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");
                   break;
               case TypeAttributes.Public:
                   Console.WriteLine("   ...is public");
                   break;
               case TypeAttributes.NestedPublic:
                   Console.WriteLine("   ...is nested and public");
                   break;
               case TypeAttributes.NestedPrivate:
                   Console.WriteLine("   ...is nested and private");
                   break;
               case TypeAttributes.NestedFamANDAssem:
                   Console.WriteLine("   ...is nested, and inheritable only within the assembly" +
                      "\n         (cannot be declared in C#)");
                   break;
               case TypeAttributes.NestedAssembly:
                   Console.WriteLine("   ...is nested and internal");
                   break;
               case TypeAttributes.NestedFamily:
                   Console.WriteLine("   ...is nested and protected");
                   break;
               case TypeAttributes.NestedFamORAssem:
                   Console.WriteLine("   ...is nested and protected internal");
                   break;
           }

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

           // 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");
                   }
                   else
                   {
                       Console.WriteLine("   ...is a class");
                   }
                   break;
               case TypeAttributes.Interface:
                   Console.WriteLine("   ...is an interface");
                   break;
           }

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

           if ((attr & TypeAttributes.Sealed) != 0)
           {
               Console.WriteLine("   ...is sealed");
           }
           
           Console.WriteLine();
       }
    }
}
// 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")
                   Else
                       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")
           Console.WriteLine()
       Next
    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

Açıklamalar

Numaralandırmanın üyelerinden TypeAttributes bazıları, birbirini dışlayan bir dizi özniteliği temsil eden maskelerdir. Örneğin, VisibilityMask üye , , Public, NestedPublic, NestedPrivate, NestedFamily, NestedAssembly, NestedFamANDAssemve NestedFamORAssem üyelerini içerirNotPublic. Her öznitelik kümesi, temel alınan değeri sıfır olan bir üye içerdiğinden, önce gibi Type.Attributesbir özellikten alınan belirli System.Reflection.TypeAttributes değere sahip maskenin değerini kullanmanız gerekirAnd. Aşağıdaki tabloda maskeler ve içerdikleri tek tek üyeler listelenir:

Maske Includes
GörünürlükMask NotUblic
Kamu
İç İçePublic
NestedPrivate
NestedFamily
NestedAssembly
NestedFamANDAssem
NestedFamORAssem
LayoutMask Autolayout
SıralıLayout
ExplicitLayout
ClassSemanticsMask Sınıf
Arayüz
StringFormatMask AnsiClass
UnicodeClass
Otomatik Sınıf
CustomFormatClass
CustomFormatMask Üye yok.

Bu numaralandırıcı sınıfının üyeleri, corhdr.h dosyasında tanımlandığı gibi CorTypeAttr numaralandırıcısı ile eşleşer.

Şunlara uygulanır