【发布时间】:2017-08-26 17:57:49
【问题描述】:
我遇到的问题是 C# 项目中的“命名空间被用作类型”。我明白它为什么会发生,我明白我必须做些什么来解决它。但这对我来说意义不大,所以这里的问题是理解 C# 上下文中命名空间和类的设计。
我希望这个问题与其他问题足够不同,因为我不是在问如何解决这种情况,而是在处理我描述的情况时如何保持逻辑和相关的命名。
我遵循 MSDN 命名解决方案的约定。所以我有一个解决方案叫:
TesterStories.Voxam
我有两个项目。一个是TesterStories.Voxam.App,看起来像这样:
namespace TesterStories.Voxam.App
{
TesterStories.Voxam.Parser parser = new TesterStories.Voxam.Parser();
class Program
{
}
}
问题出在第三行。
大概是因为我还有另一个项目叫TesterStories.Voxam.Parser,看起来像这样:
namespace TesterStories.Voxam.Parser
{
public class Parser
{
}
}
所以是说它不喜欢我的项目命名空间中有“解析器”吗?
但根据 MSDN 指南,如果 Parser 是功能,那么我应该称之为命名空间:[Company].[Project].[Feature]。班级是Parser,因为毕竟班级就是这样做的。
所以看来我要做的是:
namespace TesterStories.Voxam.Parser
{
public class Xyzzy
{
}
}
所以在这里我将我的Parser 课程更改为Xyzzy 课程。现在回到导致问题的文件中,我可以这样做:
using TesterStories.Voxam.Parser;
namespace TesterStories.Voxam.App
{
class Program
{
Xyzzy parser = new Xyzzy();
}
}
所以我明白了——但这意味着我必须改变我的班级以使其不是。我意识到我可以称它为 AppParser 或 ParserApp 或其他任何名称。
在这种情况下,开发人员倾向于做什么?你改变你的命名空间还是改变你的类?尽管就我而言,我是根据 MSDN 指南描述该功能并根据其功能正确命名该类。)
【问题讨论】:
标签: c# namespaces