【发布时间】:2010-12-20 16:45:02
【问题描述】:
我正在设计一个命名空间来保存一组类,这些类将为几个不同的应用程序处理与 用户 相关的任务。 (登录、验证等)
问题是命名空间将被称为Fusion.User,但它需要该命名空间中的一个类才能调用User。
你应该有一个与命名空间同名的类吗?还是我在这里采取了错误的方法?
【问题讨论】:
标签: .net naming-conventions namespaces class-design
我正在设计一个命名空间来保存一组类,这些类将为几个不同的应用程序处理与 用户 相关的任务。 (登录、验证等)
问题是命名空间将被称为Fusion.User,但它需要该命名空间中的一个类才能调用User。
你应该有一个与命名空间同名的类吗?还是我在这里采取了错误的方法?
【问题讨论】:
标签: .net naming-conventions namespaces class-design
以与名称空间(包)相同的方式命名类可能会导致认为类是包的核心。但如果我理解正确,用户只是你的数据对象。
据我所知,您有两个选择:
【讨论】:
命名空间是Fusion.User
类全名将是 Fusion.User.User
保持它们不同是一个好习惯,因为
在某些情况下看起来也很丑,比如我们使用两个用户。
使用 Fusion;
命名空间 xyz {
公共类测试
{
User.User userObject {get;set;}
}
}
所以更好的选择是使用不同的名称
【讨论】:
在某些情况下,使用相同的名称会导致问题。立即想到的一个是使用 WCF 服务时。当我最近在命名空间“companyName.someBehaviour”中的一个名为“someBehaviour”的类中执行此操作以使用“MyService”时,编译器对我说 MyService 在 someBehaviour 命名空间中不存在。将类名更改为不同的名称(并且更有用)解决了这个问题并允许我编译程序集。
【讨论】:
我可能将命名空间称为“usertasks”以避免任何混淆。您将不得不定期使用命名空间限定内部类以避免混淆编译器。
【讨论】: