我创建的类文件A包含一个名为myAttribute的自定义属性,例如
<Serializable>
<AttributeUsage(AttributeTargets.All)>
Public Class myAttribute
Inherits Attribute
Private m_configFileExtension As String = Nothing
Public Sub New()
End Sub
Public Property ConfigFileExtension() As String
Get
Return m_configFileExtension
End Get
Set(value As String)
m_configFileExtension = value
End Set
End Property
End Class
然后我创建了类文件B包含通过反射调用 myAttribute 的函数
Private Function AssemblyAttributes()
Dim a As Assembly = Assembly.GetAssembly(GetType(myAttribute))
Dim attributes As Object() = a.GetCustomAttributes(False)
For Each obj As Object In attributes
Dim lmc As myAttribute = TryCast(obj, myAttribute)
If Not lmc Is Nothing Then
'code here
End If
Next
End Function
然后我创建了添加程序集头的类文件C
<Assembly: myAttribute(ConfigFileExtension:="log.xml")>
类文件A、B、C在同一个 Visual Studio解决方案 1 现在我运行了解决方案,a.GetCustomAttributes(False)可以获得myAttribute.ConfigFileExtension字符串值[log.xml]
然后我将类文件A 和 B编译并构建到dll中。
现在我创建了另一个 Visual Studio解决方案 2,我使用[Add Reference]将从解决方案 1构建的 dll 添加到解决方案 2
现在的问题是...
如果我运行解决方案 2,它无法获取myAttribute 的值。但我确认我已经在解决方案 2类文件中添加了一个程序集头:
<Assembly: myAttribute(ConfigFileExtension:="log.xml")>
你知道我错过了什么/错了吗?
提前致谢!!!!!