我正在组织一个图书馆项目,并且有一个名为的中央管理器类Scenegraph
以及位于 Scenegraph 命名空间中的一大堆其他类。
我真正想要的是场景图MyLib.Scenegraph
和其他类别MyLib.Scenegraph.*
,但似乎唯一的方法是让所有其他类的内部类Scenegraph
在 Scenegraph.cs 文件中,这太笨拙了。
相反,我将其组织为Mylib.Scenegraph.Scenegraph
and MyLib.Scenegraph.*
,这确实有效,但我发现 Visual Studio 在某些情况下会混淆我是指类还是命名空间。
有没有一种好方法来组织这个包,以便用户方便,而不会将我的所有代码弄得乱七八糟?
我不建议您像命名空间那样命名类,请参阅本文.
框架设计指南第 3.4 节中说“不要使用
命名空间和该命名空间中的类型具有相同的名称”。那是:
namespace MyContainers.List
{
public class List { … }
}
为什么会有这样的坏处呢?哦,让我数一下方法。
你可以让自己陷入你认为你正在指涉的情况
指的是一件事,但实际上指的是另一件事。假设你
最终陷入这种不幸的情况:您正在编写 Blah.DLL 并且
导入 Foo.DLL 和 Bar.DLL,不幸的是,它们都有一个类型
称为 Foo:
// Foo.DLL:
namespace Foo { public class Foo { } }
// Bar.DLL:
namespace Bar { public class Foo { } }
// Blah.DLL:
namespace Blah
{
using Foo;
using Bar;
class C { Foo foo; }
}
编译器给出一个错误。“Foo”在 Foo.Foo 和
酒吧.Foo.真糟糕。我想我会通过完全限定名称来解决这个问题:
class C { Foo.Foo foo; }
现在这给出了歧义错误“富在
Foo.Foo 在 Foo.Foo 和 Bar.Foo 之间不明确”。我们仍然不知道
第一个 Foo 指的是什么,在我们弄清楚之前,我们
甚至不必费心去尝试弄清楚第二个指的是什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)