重复命名空间名称的问题

时间:2011-01-26 20:04:20

标签: c# namespaces

我有一个名为AppVisum.Membership.Views.AppVisum.Membership.Controllers.Membership._Page_Views_AppVisum_Membership_Controllers_Membership_Validate_cshtml的班级。是的,我知道它是隐蔽的,但我认为它必须被命名为,对于命名空间,这些是不必要的,但是类是由工具生成的,文件夹需要命名为AppVisum.Membership.Controllers.Membership ,所以我不知道我是否可以更改命名空间。然而,丑陋的名字不是真正的问题,主要问题是进入班级AppVisum.Sys.AppSys。 ide告诉我它找不到AppVisum.Membership.Views.AppVisum.Sys.AppSys,所以我怎么能告诉它我想要根源呢?

[编辑]

抱歉,我不够具体,因为我认为这将是一个简单的问题需要解决。全局::如果这是一个普通的.cs文件,它会完美地工作,但是,它是一个剃刀文件而且剃刀不太像@using global::AppVisum.Sys(这只是转换为使用全局,而不是任何意义)。我找到了两种可能的解决方案,第一种是简单地更改搜索文件的规则,以搜索_而不是.的文件夹。然后我会得到像AppVisum.Membership.Views.AppVisum_Membership_Controllers_Membership._Page_Views_AppVisum_Membership_Controllers_Membership_Validate_cshtml这样的路径。这可能会很好,除非有人想出一个更好的选择,我想我会为此而努力。另一种选择是重写生成类的自定义工具(它是开源的,所以我认为我应该能够做得那么简单)。希望澄清一切。

4 个答案:

答案 0 :(得分:2)

global::前缀添加到命名空间。

答案 1 :(得分:1)

尝试:

using Sys = AppVisum.Sys;

或:

using AppSys = AppVisum.Sys.AppSys;

基本上,您可以通过在using指令中使用别名类型和命名空间来减少歧义。 (并且别名不需要与类型/命名空间名称相同,它们就在我的示例中。)

答案 2 :(得分:1)

正如SLaks在评论中提到的那样,你基本上应该修复项目的默认命名空间 - 或者说,或者避免创建文件夹层次结构。你用C#标记了这个问题,但你生成的代码实际上是用VB吗?虽然VB编译器在编译时会预先设置项目的命名空间,但我不相信C#编译器会这样做,所以我很惊讶你这个命名空间是诚实的。

我不同意你的说法“丑陋的名字不是真正的问题” - 我说它真正的问题,并且难以获得特定的命名空间是一个<问题的结果。修复真正的问题(坏名称空间),其余的将消失。使用global::等只是一种解决方法,您需要在整个地方应用。最好一劳永逸地解决这个问题。

基本上,如果你能告诉我们你如何应对这种情况,我们更有可能帮助你摆脱它。

答案 3 :(得分:0)

也许您可以通过添加使用别名来简化:

using AV = AppVisum.Membership.Views.AppVisum;

并在代码中:

var s = new AV.Sys.AppSys();