0

我创建的类文件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")> 

你知道我错过了什么/错了吗?

提前致谢!!!!!

4

0 回答 0