本文整理汇总了VB.NET中System.Attribute.GetCustomAttributes方法的典型用法代码示例。如果您正苦于以下问题:VB.NET Attribute.GetCustomAttributes方法的具体用法?VB.NET Attribute.GetCustomAttributes怎么用?VB.NET Attribute.GetCustomAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Attribute
的用法示例。
在下文中一共展示了Attribute.GetCustomAttributes方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的VB.NET代码示例。
示例1: DemoModule
' 导入命名空间
Imports System.Reflection
Imports System.ComponentModel
' Give the Module some attributes.
<Module: Description("A sample description")>
' Make the CLSCompliant attribute False.
' The CLSCompliant attribute is applicable for /target:module.
<Module: CLSCompliant(False)>
Module DemoModule
Sub Main()
' Get the Module type to access its metadata.
Dim modType As Reflection.Module = GetType(DemoModule).Module
Dim attr As Attribute
' Iterate through all the attributes for the module.
For Each attr In Attribute.GetCustomAttributes(modType)
' Check for the Description attribute.
If TypeOf attr Is DescriptionAttribute Then
' Convert the attribute to access its data.
Dim descAttr As DescriptionAttribute = _
CType(attr, DescriptionAttribute)
Console.WriteLine("Module {0} has the description ""{1}"".", _
modType.Name, descAttr.Description)
' Check for the CLSCompliant attribute.
ElseIf TypeOf attr Is CLSCompliantAttribute Then
' Convert the attribute to access its data.
Dim CLSCompAttr As CLSCompliantAttribute = _
CType(attr, CLSCompliantAttribute)
Dim strCompliant As String
If CLSCompAttr.IsCompliant Then
strCompliant = "is"
Else
strCompliant = "is not"
End If
Console.WriteLine("Module {0} {1} CLSCompliant.", _
modType.Name, strCompliant)
End If
Next
End Sub
End Module
' Output:
' Module CustAttrs2VB.exe has the description "A sample description".
' Module CustAttrs2VB.exe is not CLSCompliant.
示例2: DemoModule
' 导入命名空间
Imports System.Reflection
Imports System.ComponentModel
Module DemoModule
Public Class AClass
' Add Description and ParamArray (with the keyword) attributes.
Public Sub ParamArrayAndDesc( _
<Description("This argument is a ParamArray")> _
ByVal ParamArray args() As Integer)
End Sub
End Class
Sub Main()
' Get the Class type to access its metadata.
Dim clsType As Type = GetType(AClass)
' Get the type information for the method.
Dim mInfo As MethodInfo = clsType.GetMethod("ParamArrayAndDesc")
' Get the Parameter information for the method.
Dim pInfo() As ParameterInfo = mInfo.GetParameters()
Dim attr As Attribute
' Iterate through each attribute of the parameter.
For Each attr In Attribute.GetCustomAttributes(pInfo(0))
' Check for the ParamArray attribute.
If TypeOf attr Is ParamArrayAttribute Then
' Convert the attribute to access its data.
Dim paAttr As ParamArrayAttribute = _
CType(attr, ParamArrayAttribute)
Console.WriteLine("Parameter {0} has the " + _
"ParamArray attribute.", pInfo(0).Name)
' Check for the Description attribute.
ElseIf TypeOf attr Is DescriptionAttribute Then
' Convert the attribute to access its data.
Dim descAttr As DescriptionAttribute = _
CType(attr, DescriptionAttribute)
Console.WriteLine("Parameter {0} has a description " + _
"attribute. The description is:", pInfo(0).Name)
Console.WriteLine(descAttr.Description)
End If
Next
End Sub
End Module
' Output:
' Parameter args has a description attribute. The description is:
' This argument is a ParamArray
' Parameter args has the ParamArray attribute.
示例3: Win32
' 导入命名空间
Imports System.Reflection
Imports System.Security
Imports System.Runtime.InteropServices
' Define an enumeration of Win32 unmanaged types
Public Enum UnmanagedType
User
GDI
Kernel
Shell
Networking
Multimedia
End Enum 'UnmanagedType
' Define the Unmanaged attribute.
Public Class UnmanagedAttribute
Inherits Attribute
' Storage for the UnmanagedType value.
Protected thisType As UnmanagedType
' Set the unmanaged type in the constructor.
Public Sub New(ByVal type As UnmanagedType)
thisType = type
End Sub
' Define a property to get and set the UnmanagedType value.
Public Property Win32Type() As UnmanagedType
Get
Return thisType
End Get
Set
thisType = Win32Type
End Set
End Property
End Class
' Create a class for an imported Win32 unmanaged function.
Public Class Win32
<DllImport("user32.dll", CharSet:=CharSet.Unicode)> _
Public Shared Function MessageBox(ByVal hWnd As Integer, _
ByVal Text As String, _
ByVal caption As String, _
ByVal type As Integer) As Integer
End Function 'MessageBox
End Class
Public Class AClass
' Add some attributes to Win32CallMethod.
<Obsolete("This method is obsolete. Use managed MsgBox instead."), _
Unmanaged(UnmanagedType.User)> _
Public Sub Win32CallMethod()
Win32.MessageBox(0, "This is an unmanaged call.", "Caution!", 0)
End Sub
End Class
Class DemoClass
Shared Sub Main(ByVal args() As String)
' Get the AClass type to access its metadata.
Dim clsType As Type = GetType(AClass)
' Get the type information for Win32CallMethod.
Dim mInfo As MethodInfo = clsType.GetMethod("Win32CallMethod")
If Not (mInfo Is Nothing) Then
' Iterate through all the attributes of the method.
Dim attr As Attribute
For Each attr In Attribute.GetCustomAttributes(mInfo)
' Check for the Obsolete attribute.
If attr.GetType().Equals(GetType(ObsoleteAttribute)) Then
Console.WriteLine("Method {0} is obsolete. The message is:", mInfo.Name)
Console.WriteLine(" ""{0}""", CType(attr, ObsoleteAttribute).Message)
' Check for the Unmanaged attribute.
ElseIf attr.GetType().Equals(GetType(UnmanagedAttribute)) Then
Console.WriteLine("This method calls unmanaged code.")
Console.WriteLine( _
String.Format("The Unmanaged attribute type is {0}.", _
CType(attr, UnmanagedAttribute).Win32Type))
Dim myCls As New AClass()
myCls.Win32CallMethod()
End If
Next attr
End If
End Sub
End Class
输出:
First, the compilation yields the warning, "...This method is obsolete. Use managed MsgBox instead." Second, execution yields a message box with a title of "Caution!" and message text of "This is an unmanaged call." Third, the following text is displayed in the console window: Method Win32CallMethod is obsolete. The message is: "This method is obsolete. Use managed MsgBox instead." This method calls unmanaged code. The Unmanaged attribute type is User.
示例4: Example
' 导入命名空间
Imports System.Reflection
<Assembly: AssemblyTitle("CustAttrs1VB")>
<Assembly: AssemblyDescription("GetCustomAttributes() Demo")>
<Assembly: AssemblyCompany("Microsoft")>
Module Example
Sub Main()
' Get the Assembly type to access its metadata.
Dim assy As Reflection.Assembly = GetType(Example).Assembly
' Iterate through all the attributes for the assembly.
For Each attr As Attribute In Attribute.GetCustomAttributes(assy)
' Check for the AssemblyTitle attribute.
If TypeOf attr Is AssemblyTitleAttribute Then
' Convert the attribute to access its data.
Dim attrTitle As AssemblyTitleAttribute = _
CType(attr, AssemblyTitleAttribute)
Console.WriteLine("Assembly title is ""{0}"".", _
attrTitle.Title)
' Check for the AssemblyDescription attribute.
ElseIf TypeOf attr Is AssemblyDescriptionAttribute Then
' Convert the attribute to access its data.
Dim attrDesc As AssemblyDescriptionAttribute = _
CType(attr, AssemblyDescriptionAttribute)
Console.WriteLine("Assembly description is ""{0}"".", _
attrDesc.Description)
' Check for the AssemblyCompany attribute.
ElseIf TypeOf attr Is AssemblyCompanyAttribute Then
' Convert the attribute to access its data.
Dim attrComp As AssemblyCompanyAttribute = _
CType(attr, AssemblyCompanyAttribute)
Console.WriteLine("Assembly company is {0}.", _
attrComp.Company)
End If
Next
End Sub
End Module
输出:
Assembly company is Microsoft. Assembly description is "GetCustomAttributes() Demo". Assembly title is "CustAttrs1VB".