在C#中,如果你这样做,它会编译:VS在C#在Visual Basic.NET中的命名空间之间的区别,以及如何处理与他们
namespace Name
{
public class Test
{
}
public class TestUse
{
private global::Name.Test test;
}
}
如果试图在VB.NET一样,但是,它不会:
Namespace Name
Public Class Test
End Class
Public Class TestUse
Private test As Global.Name.Test
End Class
End Namespace
我得到(取决于我尝试使用“测试”的方式)或者“‘名称’不是‘<默认>’的成员。”或“类型'Name.Test'未定义。”在我的错误列表中。我发现有两种方法可以使其工作,但对于用户来说都不合理。一种是从项目属性中删除“根名称空间”。另一种是在“全局”和“名称”之间包含该名称空间。
我做了一个使用CodeDom为C#和VB.NET生成代码的自定义工具。这就是为什么上述两种修正都不可行的原因:我不能指望我的用户有一个空的根名称空间,而且我讨厌在我的代码生成中必须执行VB特定的技巧(这种技巧会打败使用一种与语言无关的工具的目的,是不是?),比如挑选出“Root Namespace”(不是我知道自己的头顶上有多离谱),并将其包含在我的代码生成中。
我不想忽略全局修改器,因为它保护工具免受用户为生成的输出选择错误名称的影响。有人建议我应该如何处理这个问题吗?
我目前没有Windows机器来检查,但是不能只是说“Private test As Test”?我认为包含的名称空间在解析过程中会自动搜索。 – 2009-12-13 03:40:59