[英]Calling Custom Assembly Attributes
我創建了一個自定義屬性,並在AssemblyInfo.vb文件中使用它。 該屬性在另一個文件中聲明,如下所示:
Public NotInheritable Class AssemblyBuildNameAttribute
Inherits Attribute
Private _p1 As String
Sub New(p1 As String)
' TODO: Complete member initialization
_p1 = p1
End Sub
End Class
並位於AssemblyInfo.vb文件中,如下所示:
<Assembly: AssemblyVersion("0.4.15")>
<Assembly: AssemblyFileVersion("13.10.1.8")>
<Assembly: AssemblyBuildName("alpha")>
我怎么稱呼這個自定義屬性? 我希望能夠像調用版本信息一樣調用它:
Public Class AppInfo
Public Shared Function VersionMajor() As String
Return Assembly.GetExecutingAssembly().GetName().Version.Major.ToString()
End Function
Public Shared Function VersionMinor() As String
Return Assembly.GetExecutingAssembly().GetName().Version.Minor.ToString()
End Function
Public Shared Function VersionPatch() As String
Return Assembly.GetExecutingAssembly().GetName().Version.Build.ToString()
End Function
End Class
您必須使用Reflection來獲取屬性信息和值,並且每個屬性都需要一個proc。
不過,首先,您的示例Attribute類缺少一個關鍵項:如何返回信息。 您需要添加一個屬性獲取器:
Friend ReadOnly GetBuild() As String
Get
Return _p1
End Get
End Property
現在你准備好了
Friend Function GetAsmBuild() As String
Dim assy As [Assembly] = [Assembly].GetExecutingAssembly
Dim Attributes As Object()
Attributes = assy.GetCustomAttributes(GetType(AssemblyBuildNameAttribute), False)
If Attributes.Length > 0 Then
Return Attributes(0).GetBuild
Else
Return String.Empty
End If
End Function
GetVersion
是屬性獲取器的名稱。 因此,對於我添加的那是:
Return Attributes(0).GetBuild
它與獲取類或枚舉等的Attr大約相同。另外:程序集已有版本,您可以在Project屬性設置中進行控制。 並且procs已經存在於System.Reflection
以返回它們。
編輯:
在運行時獲取信息的方法:
Public Shared Function VersionPatch() As String
Return GetAsmBuild
End Function
或命名我的proc VersionPatch
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.