Type.Attributes Property
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Gets the attributes associated with the Type.
Assembly: mscorlib (in mscorlib.dll)
Property Value
Type: System.Reflection.TypeAttributesA TypeAttributes object representing the attribute set of the Type, unless the Type represents a generic type parameter, in which case the value is unspecified.
If the current Type represents a constructed generic type, this property returns the attributes of the generic type definition. For example, the attributes returned for MyGenericClass<int> (MyGenericClass(Of Integer) in Visual Basic) are the attributes of MyGenericClass<T> (MyGenericClass(Of T) in Visual Basic).
If the current Type represents a generic type parameter — that is, if the IsGenericParameter property returns true — the TypeAttributes value returned by this property is unspecified.
The following example shows the use of the Type.Attributes property. The fact that there is a member in each of several groupings that has the value zero means that you must use masks before testing for those members.
For most purposes, properties like IsClass, IsAutoLayout, and IsSpecialName are easier to use than type attributes.
Note: |
|---|
To run this example, see Building examples that have static TextBlock controls for Windows Phone 8. |
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 Private Shared outputBlock As System.Windows.Controls.TextBlock Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock) Example.outputBlock = outputBlock DisplayAttributes(GetType(Example)) DisplayAttributes(GetType(NestedClass)) DisplayAttributes(GetType(INested)) DisplayAttributes(GetType(S)) End Sub Private Shared Sub DisplayAttributes(ByVal t As Type) outputBlock.Text &= "Attributes for type " & t.Name & ":" & vbLf Dim attr As TypeAttributes = t.Attributes ' To test for visibility attributes, you must use the visibility ' mask. Dim visibility As TypeAttributes = attr And TypeAttributes.VisibilityMask Select Case visibility Case TypeAttributes.NotPublic: outputBlock.Text &= " ...is not Public" & vbLf Case TypeAttributes.Public: outputBlock.Text &= " ...is Public" & vbLf Case TypeAttributes.NestedPublic: outputBlock.Text &= " ...is nested and Public" & vbLf Case TypeAttributes.NestedPrivate: outputBlock.Text &= " ...is nested and Private" & vbLf Case TypeAttributes.NestedFamANDAssem: outputBlock.Text &= " ...is nested, and inheritable only within the assembly" & _ vbLf & " (cannot be declared in Visual Basic)" & vbLf Case TypeAttributes.NestedAssembly: outputBlock.Text &= " ...is nested and Friend" & vbLf Case TypeAttributes.NestedFamily: outputBlock.Text &= " ...is nested and Protected" & vbLf Case TypeAttributes.NestedFamORAssem: outputBlock.Text &= " ...is nested and Protected Friend" & vbLf End Select Dim layout As TypeAttributes = attr And TypeAttributes.LayoutMask Select Case layout Case TypeAttributes.AutoLayout: outputBlock.Text &= " ...is AutoLayout" & vbLf Case TypeAttributes.SequentialLayout: outputBlock.Text &= " ...is SequentialLayout" & vbLf Case TypeAttributes.ExplicitLayout: outputBlock.Text &= " ...is ExplicitLayout" & vbLf End Select Dim classSemantics As TypeAttributes = attr And TypeAttributes.ClassSemanticsMask Select Case classSemantics Case TypeAttributes.Class: If t.IsValueType Then outputBlock.Text &= " ...is a value type" & vbLf Else outputBlock.Text &= " ...is a class" & vbLf End If Case TypeAttributes.Interface: outputBlock.Text &= " ...is an interface" & vbLf End Select If 0 <> (attr And TypeAttributes.Abstract) Then _ outputBlock.Text &= " ...is MustInherit" & vbLf If 0 <> (attr And TypeAttributes.Sealed) Then _ outputBlock.Text &= " ...is NotInheritable" & vbLf End Sub End Class ' This example produces 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
Note: