TypeAttributes Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- Öznitelikler
Alanlar
Abstract | 128 | Türün soyut olduğunu belirtir. |
AnsiClass | 0 | LPTSTR, ANSI olarak yorumlanır. |
AutoClass | 131072 | LPTSTR otomatik olarak yorumlanır. |
AutoLayout | 0 | Sınıf alanlarının ortak dil çalışma zamanı tarafından otomatik olarak yerleştirildiğini belirtir. |
BeforeFieldInit | 1048576 | Türün statik yöntemlerini çağırmanın sistemi türü başlatmaya zorlamadığını belirtir. |
Class | 0 | Türün bir sınıf olduğunu belirtir. |
ClassSemanticsMask | 32 | Sınıf semantiği bilgilerini belirtir; geçerli sınıf bağlamsaldır (aksi durumda çeviktir). |
CustomFormatClass | 196608 | LPSTR, bir NotSupportedExceptionoluşturma olasılığını içeren uygulamaya özgü bazı araçlar tarafından yorumlanır. .NET Framework Microsoft uygulamasında kullanılmaz. |
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 Microsoft uygulamasında kullanılmaz. |
ExplicitLayout | 16 | Sınıf alanlarının belirtilen uzaklıklarda düzenlendiğini belirtir. |
HasSecurity | 262144 | Türün kendisiyle ilişkili güvenlik var. |
Import | 4096 | Sınıfın veya arabirimin başka bir modülden içeri aktarıldığını belirtir. |
Interface | 32 | Türün bir arabirim olduğunu belirtir. |
LayoutMask | 24 | Sınıf düzeni bilgilerini belirtir. |
NestedAssembly | 5 | sınıfının derleme görünürlüğüyle iç içe geçmiş 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üğüyle iç içe olduğunu ve bu nedenle yalnızca ailesi ile derlemesinin kesişiminde bulunan yöntemlerle erişilebilir olduğunu 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. |
NestedFamORAssem | 7 | Sınıfın aile veya derleme görünürlüğüyle iç içe olduğunu ve bu nedenle yalnızca ailesi ve derlemesinin birleşiminde bulunan yöntemlerle erişilebilir olduğunu belirtir. |
NestedPrivate | 3 | sınıfının özel görünürlükle iç içe geçmiş olduğunu belirtir. |
NestedPublic | 2 | sınıfının genel görünürlükle iç içe geçmiş 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. |
ReservedMask | 264192 | Çalışma zamanı kullanımı için ayrılmış öznitelikler. |
RTSpecialName | 2048 | Çalışma zamanı ad kodlamayı denetlemelidir. |
Sealed | 256 | Sınıfın somut olduğunu ve genişletilemeyeceğini belirtir. |
SequentialLayout | 8 | Sınıf alanlarının, alanların meta veriler için yayılma sırasına göre sıralı olarak düzenlendiğini belirtir. |
Serializable | 8192 | sınıfının serileştirilebileceğini belirtir. |
SpecialName | 1024 | sınıfının adla belirtilen şekilde özel olduğunu belirtir. |
StringFormatMask | 196608 | Yerel birlikte çalışabilirlik için dize bilgilerini almak için kullanılır. |
UnicodeClass | 65536 | LPTSTR, UNICODE olarak yorumlanır. |
VisibilityMask | 7 | Tür görünürlük bilgilerini belirtir. |
WindowsRuntime | 16384 | Windows Çalışma Zamanı türünü belirtir. |
Ö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 TypeAttributes
bazı üyeleri, birbirini dışlayan bir dizi özniteliği temsil eden maskelerdir. Örneğin, VisibilityMask
üye , , Public
, NestedPublic
, NestedPrivate
, NestedFamily
, NestedAssembly
, NestedFamANDAssem
ve NestedFamORAssem
üyelerini içerirNotPublic
. Her öznitelik kümesi, temel alınan değeri sıfır olan bir üye içerdiğinden, önce And
gibi Type.Attributesbir özellikten alınan belirli System.Reflection.TypeAttributes değere sahip maskenin değerini kullanmanız gerekir. Aşağıdaki tabloda maskeler ve içerdikleri tek tek üyeler listelenir:
Maskeleme | Dahil Eder |
---|---|
GörünürlükMask | NotPublic Genel nestedPublic nestedPrivate NestedFamily NestedAssembly NestedFamANDAssem NestedFamORAssem |
Düzen Maskesi | Autolayout SıralıLayout ExplicitLayout |
ClassSemanticsMask | Sınıf Arabirim |
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ştir.