无法访问引用的项目常量

时间:2014-03-11 18:46:31

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

我遇到了在同一解决方案中使用跨多个项目的模块的问题(常规项目和单元测试的测试项目)。我试图遵循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

1 个答案:

答案 0 :(得分:2)

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

Public Module modConstants
    ' your constants
End Module

有关详细信息,请参阅Module statement documentation