我为DLL定义了以下程序集属性,但我无法在其他项目中读取它。你有什么建议吗?
装配属性:
Namespace Extensions.CustomAttributes
<AttributeUsage(AttributeTargets.All, Inherited:=True, AllowMultiple:=True)>
Public Class DeveloperNoteAttribute
Inherits System.Attribute
Protected strName, strComment As String
Protected blnBug As Boolean
Public Sub New(ByVal Name As String, ByVal Comment As String, ByVal DateRecorded As String)
MyBase.New()
strName = Name
strComment = Comment
End Sub
Public Property Name As String
Get
Return strName
End Get
Set(ByVal value As String)
strName = value
End Set
End Property
Public Property Comment As String
Get
Return strComment
End Get
Set(ByVal value As String)
strComment = value
End Set
End Property
Public Property Bug As Boolean
Get
Return blnBug
End Get
Set(ByVal value As Boolean)
blnBug = value
End Set
End Property
End Class
End Namespace
AssemblyInfo.vb中:
<Assembly: Extensions.CustomAttributes.DeveloperNoteAttribute("Test1", "Test2", "Test3")>
在另一个项目中获取属性(通过变量:文件名)
Dim oAssem As System.Reflection.Assembly = System.Reflection.Assembly.LoadFrom(Filename)
' Get any assembly-level attributes
Dim oAttribs() As Attribute = Attribute.GetCustomAttributes(oAssem)
For Each att In oAttribs
Try
Dim at As Extensions.CustomAttributes.DeveloperNoteAttribute = CType(att, Extensions.CustomAttributes.DeveloperNoteAttribute)
Debug.WriteLine(at.Name.ToString)
Catch ex As Exception
End Try
Next
在调试器中我得到了很多“System.InvalidCastException”
答案 0 :(得分:0)
针对未来访问者的问题的解决方案:
您可以像我在上面的问题中那样定义自定义装配属性。
要读出自定义属性,可以使用System.Attribute.GetCustomAttributes()来获取所有定义属性的数组。但是你也可以使用System.Attribute.GetCustomAttribute()来获取你传递的Type的特定属性。
<强>的信息:强>
非常感谢到@DanVerdolino寻求帮助!