我有一个包含2个项目的解决方案 - 1个VB,1个C#。我想从我的C#项目中查看和编辑我的VB项目的全局变量。我已将字符串变量(在VB中)声明为Public Shared。
我无法从我的C#项目中看到它。
我不熟悉C#,因此我不确定如何使用“Imports”语句来获取我的VB项目及其全局变量的可见性。我可以这样做吗?或者我没有正确地思考这个问题? (我是一个VB人,所以C#仍然有点神秘)。感谢。
答案 0 :(得分:4)
VB和C#都不支持全局变量。
您需要从C#项目添加对VB项目的引用,以便它可以使用其成员 然后,您可以访问您在其中声明的类/模块的静态字段/属性:
ClassName.PropertyName
答案 1 :(得分:1)
虽然VB支持模块级声明,但C#不支持。在C#中,VB模块将显示为静态类。在VB中,您还可以导入整个类并在全局范围内使用其共享/静态成员。这也不是C#中可以实现的。
如果在VB中你有:
Public Module MyDeclares
Public MyGlobalString As String
End Module
然后在C#中,您将添加对该项目的引用,然后编写如下代码:
using MyProject;
并访问该字段:
MyDeclares.MyGlobalString = "Some text";
<强> EDITED 强> 如果要访问声明为内部的另一个程序集中的属性和方法(VB中的朋友),那么您将修改AssemblyInfo.vb(或AssemblyInfo.cs)文件并将InternalsVisibleTo声明添加到您想要的程序集中公开,引用要允许访问的程序集(而不是命名空间)。
如果您的程序集使用强密钥签名,则必须在定义中包含公钥。请点击链接获取更多信息,包括示例。
答案 2 :(得分:0)
我最终使用我的模块保留在VB项目中 - 这是我在各个部分中获得良好可见性的唯一方法。