1

我在同一个解决方案(一个常规项目和一个用于单元测试的测试项目)中跨多个项目使用模块时遇到问题。我正在尝试遵循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,但是在添加对它的引用之后,两个项目都不能导入它或使用它的变量(阅读后尝试:在多个项目中使用相同的模块)。

模块代码:

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
4

1 回答 1

2

Module访问级别是Friend默认的。您必须明确声明它,就Public好像您想从项目边界之外使用它一样。

Public Module modConstants
    ' your constants
End Module

有关更多信息,请参阅Module声明文档

于 2014-03-11T18:49:00.840 回答