gpt4 book ai didi

c# - Visual Basic.NET 与 C# 中命名空间的区别以及如何处理它们

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:56 25 4
gpt4 key购买 nike

在 C# 中,如果你这样做,它会编译:

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’不是‘ ’的成员。”或“未定义类型‘Name.Test’。”在我的错误列表中。我找到了两种方法让它工作,但对用户来说这两种方法都不合理。一种是从项目属性中删除“Root Namespace”。另一种是在“全局”和“名称”之间包含该命名空间。

我制作了一个自定义工具,它使用 CodeDom 为 C# 和 VB.NET 生成代码。这就是为什么上面两个修复都不可行的原因:我不能指望我的用户有一个空的根命名空间,而且我不想在我的代码生成中使用特定于 VB 的技巧(有点破坏使用语言中立工具的目的,不是吗?),例如选择“根命名空间”(不是我知道如何脱离我的头脑)并将其包含在我的代码生成中。

我也不想遗漏全局修饰符,因为它可以保护工具免受用户为生成的输出选择错误名称的影响。有人对我应该如何处理这个问题有建议吗?

最佳答案

鉴于您无论如何都必须为任何一种语言执行不同的代码生成任务,这只是生成该代码的差异中的又一滴水。

与其他实现细节相比,乍一看,插入默认 namespace 的 VB 特定技巧的编码并不是什么大问题。

祝你好运!

关于c# - Visual Basic.NET 与 C# 中命名空间的区别以及如何处理它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1894753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com