Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются атрибуты, которые чаще всего используются в программах Visual Basic.
Глобальные атрибуты
Большинство атрибутов применяются к определенным элементам языка, таким как классы или методы; однако некоторые атрибуты являются глобальными— они применяются ко всей сборке или модулю. Например, AssemblyVersionAttribute атрибут можно использовать для внедрения сведений о версии в сборку, как показано ниже.
<Assembly: AssemblyVersion("1.0.0.0")>
Глобальные атрибуты следуют в исходном коде после любых верхнеуровневых операторов Imports
и перед любыми объявлениями типа, модуля или пространства имен. Глобальные атрибуты могут отображаться в нескольких исходных файлах, но файлы должны быть скомпилированы в одном проходе компиляции. Для проектов Visual Basic глобальные атрибуты обычно помещаются в файл AssemblyInfo.vb (файл создается автоматически при создании проекта в Visual Studio).
Атрибуты сборки — это значения, предоставляющие сведения о сборке. Они делятся на следующие категории:
Атрибуты удостоверения сборки
Информационные атрибуты
Атрибуты манифеста сборки
Атрибуты удостоверения сборки
Три атрибута (со строгим именем, если применимо) определяют идентификацию сборки: имя, версия и культура. Эти атрибуты формируют полное имя сборки и требуются при ссылке на нее в коде. Вы можете задать версию и культуру сборки с помощью атрибутов. Однако имя задается компилятором, интегрированной средой разработки Visual Studio в диалоговом окне "Сведения о сборке" или компоновщиком сборок (Al.exe) при создании сборки, исходя из файла, содержащего манифест сборки. Атрибут AssemblyFlagsAttribute указывает, может ли несколько копий сборки сосуществовать.
В следующей таблице показаны атрибуты удостоверения.
Свойство | Цель |
---|---|
AssemblyName | Полностью описывает идентичность сборки. |
AssemblyVersionAttribute | Указывает версию сборки. |
AssemblyCultureAttribute | Указывает, какой язык и региональные параметры поддерживает сборку. |
AssemblyFlagsAttribute | Указывает, поддерживает ли сборка параллельное выполнение на одном компьютере, в том же процессе или в том же домене приложения. |
Информационные атрибуты
Информационные атрибуты можно использовать для предоставления дополнительных сведений о компании или продукте для сборки. В следующей таблице System.Reflection показаны информационные атрибуты, определенные в пространстве имен.
Свойство | Цель |
---|---|
AssemblyProductAttribute | Определяет пользовательский атрибут, указывающий имя продукта для манифеста сборки. |
AssemblyTrademarkAttribute | Определяет пользовательский атрибут, задающий товарный знак для манифеста сборки. |
AssemblyInformationalVersionAttribute | Определяет пользовательский атрибут, указывающий информационную версию манифеста сборки. |
AssemblyCompanyAttribute | Определяет настраиваемый атрибут, указывающий имя компании для манифеста сборки. |
AssemblyCopyrightAttribute | Определяет пользовательский атрибут, указывающий авторские права для манифеста сборки. |
AssemblyFileVersionAttribute | Указывает компилятору использовать определенный номер версии для ресурса версии Win32. |
CLSCompliantAttribute | Указывает, соответствует ли сборка спецификации CLS. |
Атрибуты манифеста сборки
Атрибуты манифеста сборки можно использовать для предоставления сведений в манифесте сборки. К ним относятся название, описание, псевдоним по умолчанию и конфигурация. В следующей таблице показаны атрибуты манифеста сборки, определенные в пространстве имен System.Reflection.
Свойство | Цель |
---|---|
AssemblyTitleAttribute | Определяет настраиваемый атрибут, указывающий заголовок сборки для манифеста сборки. |
AssemblyDescriptionAttribute | Определяет настраиваемый атрибут, задающий описание сборки в манифесте сборки. |
AssemblyConfigurationAttribute | Определяет пользовательский атрибут, указывающий конфигурацию сборки (например, для розничной продажи или отладки) для манифеста сборки. |
AssemblyDefaultAliasAttribute | Определяет понятный псевдоним по умолчанию для манифеста сборки |
Устаревший атрибут
Атрибут Obsolete
помечает сущность программы как сущность, которая больше не рекомендуется использовать. Каждое использование сущности, помеченной как устаревшая, впоследствии создает предупреждение или ошибку в зависимости от того, как настроен атрибут. Рассмотрим пример.
<System.Obsolete("use class B")>
Class A
Sub Method()
End Sub
End Class
Class B
<System.Obsolete("use NewMethod", True)>
Sub OldMethod()
End Sub
Sub NewMethod()
End Sub
End Class
В этом примере Obsolete
атрибут применяется к классу A
и методу B.OldMethod
. Так как для второго аргумента конструктора атрибута B.OldMethod
задано значение true
, этот метод вызовет ошибку компилятора, в то время как при использовании класса A
будет просто выдано предупреждение. При этом вызов B.NewMethod
не создает предупреждений или ошибок.
Строка, указанная в качестве первого аргумента конструктора атрибутов, будет отображаться как часть предупреждения или ошибки. Например, при использовании с предыдущими определениями следующий код создает два предупреждения и одну ошибку:
' Generates 2 warnings:
' Dim a As New A
' Generate no errors or warnings:
Dim b As New B
b.NewMethod()
' Generates an error, terminating compilation:
' b.OldMethod()
Создается два предупреждения для класса A
: одно для объявления ссылки на класс, а второе — для конструктора класса.
Атрибут Obsolete
можно использовать без аргументов, но в том числе объяснение того, почему элемент устарел и что использовать вместо этого рекомендуется.
Атрибут Obsolete
является атрибутом однократного использования и может применяться к любой сущности, допускающей использование атрибутов.
Obsolete
является псевдонимом для ObsoleteAttribute.
Условный атрибут
Атрибут Conditional
определяет зависимость выполнения метода от идентификатора предварительной обработки. Атрибут Conditional
является псевдонимом для ConditionalAttribute и может применяться к методу или классу атрибута.
В этом примере Conditional
применяется к методу для включения или отключения отображения диагностических сведений, относящихся к программе:
#Const TRACE_ON = True
Imports System.Diagnostics
Module TestConditionalAttribute
Public Class Trace
<Conditional("TRACE_ON")>
Public Shared Sub Msg(ByVal msg As String)
Console.WriteLine(msg)
End Sub
End Class
Sub Main()
Trace.Msg("Now in Main...")
Console.WriteLine("Done.")
End Sub
End Module
Если идентификатор не определен, выходные TRACE_ON
данные трассировки не будут отображаться.
Атрибут Conditional
часто используется с идентификатором DEBUG
для включения функций трассировки и ведения журнала для отладочных сборок, но не в релизных сборках, например.
<Conditional("DEBUG")>
Shared Sub DebugMethod()
End Sub
При вызове метода, помеченного как условное, наличие или отсутствие указанного символа предварительной обработки определяет, включен или опущен вызов. Если этот символ определен, вызов включается; в противном случае вызов пропускается. Использование Conditional
является более чистой, более элегантной и менее подверженной ошибкам альтернативе заключению методов внутри #if…#endif
блоков, как показано ниже:
#If DEBUG Then
Sub ConditionalMethod()
End Sub
#End If
Условный метод должен быть методом в объявлении класса или структуры и не должен иметь возвращаемое значение.
Использование нескольких идентификаторов
Если метод имеет несколько Conditional
атрибутов, вызов метода включается, если определен по крайней мере один из условных символов (другими словами, символы логически связаны с помощью оператора OR). В этом примере наличие либо A
, либо B
приведет к вызову метода.
<Conditional("A"), Conditional("B")>
Shared Sub DoIfAorB()
End Sub
Чтобы добиться эффекта логического связывания символов с помощью оператора AND, можно определить последовательные условные методы. Например, второй метод ниже будет выполняться только в том случае, если определены и A
, и B
.
<Conditional("A")>
Shared Sub DoIfA()
DoIfAandB()
End Sub
<Conditional("B")>
Shared Sub DoIfAandB()
' Code to execute when both A and B are defined...
End Sub
Использование условного оператора с классами атрибутов
Атрибут Conditional
также может применяться к определению класса атрибута. В этом примере настраиваемый атрибут Documentation
будет добавлять сведения только в метаданные, если определена ОТЛАДКА.
<Conditional("DEBUG")>
Public Class Documentation
Inherits System.Attribute
Private text As String
Sub New(ByVal doc_text As String)
text = doc_text
End Sub
End Class
Class SampleClass
' This attribute will only be included if DEBUG is defined.
<Documentation("This method displays an integer.")>
Shared Sub DoWork(ByVal i As Integer)
System.Console.WriteLine(i)
End Sub
End Class
Атрибуты информации о вызывающем абоненте
С помощью атрибутов сведений о вызывающем методе можно получить информацию о вызывающей стороне. Вы можете получить путь к файлу исходного кода, номер строки в исходном коде и имя участника вызывающего объекта.
Чтобы получить сведения о вызывающем элементе, используйте атрибуты, применяемые к необязательным параметрам. Каждый необязательный параметр задает значение по умолчанию. В следующей таблице перечислены атрибуты сведений о вызывающем объекте, определенные в пространстве имен System.Runtime.CompilerServices.
Свойство | Описание | Тип |
---|---|---|
CallerFilePathAttribute | Полный путь к исходному файлу, который содержит вызывающий объект. Это путь во время компиляции. | String |
CallerLineNumberAttribute | Номер строки в исходном файле, из которого вызывается метод. | Integer |
CallerMemberNameAttribute | Имя метода или имя свойства вызывающего объекта. Дополнительные сведения см. в разделе "Сведения о вызывающем объекте" (Visual Basic). | String |
CallerArgumentExpressionAttribute | Выражение, используемое вызывающей стороной для аргументации. Дополнительные сведения см. в разделе "Сведения о вызывающем объекте" (Visual Basic). | String |
Дополнительные сведения об атрибутах сведений о вызываемом объекте см. в разделе "Сведения о вызывающем объекте" (Visual Basic).
Атрибуты Visual Basic
В следующей таблице перечислены атрибуты, относящиеся к Visual Basic.
Свойство | Цель |
---|---|
ComClassAttribute | Указывает компилятору, что класс должен быть предоставлен как COM-объект. |
HideModuleNameAttribute | Позволяет членам модуля получать доступ только к квалификации, необходимой для модуля. |
VBFixedStringAttribute | Задает размер строки фиксированной длины в структуре для использования с входными и выходными функциями файлов. |
VBFixedArrayAttribute | Задает размер фиксированного массива в структуре для использования с входными и выходными функциями файлов. |
COMClassAttribute
Используйте COMClassAttribute
для упрощения процесса создания COM-компонентов из Visual Basic. COM-объекты сильно отличаются от сборок .NET Framework, и без COMClassAttribute
необходимо выполнить несколько шагов для генерации COM-объекта с помощью Visual Basic. Для классов, помеченных как COMClassAttribute
", компилятор выполняет многие из этих действий автоматически.
HideModuleNameAttribute
Используется HideModuleNameAttribute
для доступа к членам модуля, используя только квалификацию, необходимую для модуля.
VBFixedStringAttribute
Используйте VBFixedStringAttribute
в Visual Basic для создания строки фиксированной длины. Строки имеют переменную длину по умолчанию, и этот атрибут по умолчанию полезен при хранении строк в файлах. В следующем коде показано следующее:
Structure Worker
' The runtime uses VBFixedString to determine
' if the field should be written out as a fixed size.
<VBFixedString(10)> Public LastName As String
<VBFixedString(7)> Public Title As String
<VBFixedString(2)> Public Rank As String
End Structure
VBFixedArrayAttribute
Используется VBFixedArrayAttribute
для объявления массивов, фиксированных в размере. Как и строки Visual Basic, массивы имеют переменную длину по умолчанию. Этот атрибут полезен при сериализации или записи данных в файлы.