代码之家  ›  专栏  ›  技术社区  ›  Simon

当引用为dll时,为什么我不能访问类库方法/属性?

  •  0
  • Simon  · 技术社区  · 17 年前

    我创建了一个类库并构建了一个DLL(发布版本)。然后,我在另一个项目中引用了DLL(我尝试了几个)。我可以在对象浏览器中看到名称空间和类,我可以声明类的实例,但我不能使用或看到任何方法或属性!没有任何智能感知,手动调用方法会导致“声明预期”错误。

    在类库解决方案中,我有一个引用类库项目的单元测试项目,它工作正常(并且所有测试都通过)。

    有人能为这里可能发生的问题提供任何提示吗?我在过去已经构建了大量的DLL,并且在引用它们时完全没有遇到任何问题。

    **编辑:示例类(如您所见,它非常简单)

    Public Class NTSCurrency
        Implements IComparable
    
        Public Sub New()
    
        End Sub
    
        Public Sub New(ByVal code As String, ByVal name As String)
            _Code = code
            _Name = name
        End Sub
    
        Private _Code As String
        Private _Name As String
    
        Public Property Code() As String
            Get
                Return _Code
            End Get
            Set(ByVal value As String)
                _Code = value
            End Set
        End Property
    
        Public Property Name() As String
            Get
                Return _Name
            End Get
            Set(ByVal value As String)
                _Name = value
            End Set
        End Property
    
        Public Overrides Function ToString() As String
            Return Me.Name
        End Function
    
        Public Function CompareTo(ByVal obj As Object) As Integer Implements System.IComparable.CompareTo
            Dim cur As NTSCurrency = CType(obj, NTSCurrency)
            Return Name.CompareTo(cur.Name)
        End Function
    
    End Class
    

    **更新:刚刚用现有的解决方案测试了这个DLL,它工作正常。有新项目的地方吗?

    3 回复  |  直到 17 年前
        1
  •  3
  •   REA_ANDREW    17 年前

    检查您为类、方法和属性提供了什么范围。它们是公共的,或者如果它们受到保护,您是从类继承的吗?如果类是抽象的,那么您将无法实例化它的实例。

    安得烈

        2
  •  1
  •   Simon    17 年前

    没有人笑…

    这是因为我试图引用子或方法定义之外的dll方法和属性。

    我浪费了2个小时。

    感谢所有帮助过的人。

        3
  •  0
  •   Christian Hayter    17 年前

    所以您有可以从程序集B(单元测试)而不是从程序集C(生产代码)调用的程序集A吗?我觉得很奇怪。我误解你了吗?

    您可以尝试逐步将程序集B代码更改为程序集C,一次只需一小步,然后查看它在哪里停止工作。