如何选择同名的两个命名空间中的一个?

3

我有一个名为Shared的项目和另一个名为Foo1的项目,涉及到IT技术相关内容。

Foo1中,我创建了一个名为Shared的文件夹,因此在解决方案中有两个命名空间都叫做Shared。

我在Foo1项目中添加了对Shared项目的引用。

但现在当我在Foo1中的文件中输入using时,IntelliSense不会显示Shared命名空间。

如何在文件中指定我想要使用Shared项目中的Shared命名空间?

注意:我想要使用Share命名空间的文件位于项目的根目录(我的意思是在Shared文件夹之外)


2
文件夹实际上并不对应命名空间。请检查您文件中的“namespace”声明。 - SLaks
可以只更改一个的名称吗?它们必须共享吗? - NeverAgain
1
Foo1 应该使用 Foo1.Shared 而不是 Shared。除非你在使用 Foo1; 的情况下出现了冲突(此时 Shared.Blah 可能会有歧义)。但在这种情况下,你可以给它们取别名(例如 using FooShared = Foo.Shared;)。 - Brad Christie
@SLaks 我遵循了你的建议,现在它可以工作了! - vcRobe
2个回答

2

给定以下解决方案结构:

Solution1

---Shared(项目)

---Foo1(项目)

--- ===Shared(命名空间/目录)

我的理解是,您想要从Foo1根目录中的文件中引用Foo1.Shared命名空间中的内容,假设在Foo1命名空间中。

如果这一切都正确,您可以使用别名显式地引用您的两个Shared命名空间,如下所示:

using SolutionWideShared = Shared;
using Foo1Shared = Foo1.Shared;

现在,您可以使用别名来引用任何命名空间中的类,如下所示:

var blah = new SolutionWideShared.SomeClassInTheSharedProject();

或者

var bling = new Foo1Shared.SomeClassInFoo1ProjectInSharedNamespace();

这只是一个解决方案,但我喜欢明确的代码,这将使代码非常易读且不会混淆。


0
理想情况下,您应该重新考虑命名,并尝试更加描述性。 "Shared"是什么?它与Foo.Shared有何不同?在生产质量的代码中,这将需要重构和重命名,我个人认为。如果这只是一个虚拟的玩耍项目,您可以使用别名。
using FooShared = Foo.Shared;

所以你将拥有Shared,这是你的初始共享项目,和FooShared


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接