【问题标题】:Cannot access referenced project constants无法访问引用的项目常量
【发布时间】:2014-03-11 18:46:30
【问题描述】:

我在同一解决方案(一个常规项目和一个用于单元测试的测试项目)中跨多个项目使用模块时遇到问题。我正在尝试遵循 http://msdn.microsoft.com/en-us/library/ms182532(v=vs.110).aspx 中的示例代码(但使用 VB.NET 而不是 C#)。

所以我有 2 个项目,ZBank 和 ZBankTests。 ZBankTests 引用了 ZBank。 ZBank 有一个类 clsAccount(命名空间 BankAccount)和一个模块 modConstants(命名空间 BankConstants)。 clsAccount 导入 ZBank.BankConstants 并可以使用其常量变量。

ZBankTests 有一个类 clsAccountTests(命名空间 ZBank.BankAccount.Tests),它导入 ZBank.BankAccount 和 ZBank.BankConstants。我可以很好地使用 BankAccount 类,但它会出错:

"'DebitAmountExceedsBalanceMessage' is not declared. It may be inaccessible due to its protection level."

我也将模块编译成 DLL,但是在添加对它的引用后,两个项目都无法导入它或使用它的变量(阅读后尝试:Using the same modules in multiple projects)。

模块代码:

Namespace BankConstants

    Module modConstants

        Public DebitAmountExceedsBalanceMessage As String = "Debit amount exceeds balance"
        Public DebitAmountLessThanZeroMessage As String = "Debit amount less than zero"

    End Module

End Namespace

【问题讨论】:

    标签: vb.net project-reference access-levels


    【解决方案1】:

    默认情况下,Module 访问级别为 Friend。如果您想在项目边界之外使用它,则必须将其显式声明为 Public

    Public Module modConstants
        ' your constants
    End Module
    

    更多信息请参见Module statement documentation

    【讨论】:

    • 如此简单。谢谢,克罗诺。
    猜你喜欢
    • 2013-09-22
    • 2020-11-30
    • 2012-05-25
    • 2023-03-05
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多