假设我正在制作一个新的图书馆,Jokes,
有一个小的 API。为了使我的 API 易于使用,我将它放在基本命名空间中:
namespace Jokes
--> public interface IJoker
--> string Joke();
--> public static class Jokers
--> public static IJoker NewSlapstickJoker()
--> public static IJoker NewAbsurdJoker()
--> public static IJoker NewCheesyJoker()
clown 的实现是内部的:
--> internal class SlapstickJoker : IJoker
--> internal class AbsurdJoker : IJoker
--> internal class CheesyJoker : IJoker
现在我很确定以下是要遵循的准则(有人可以验证一下吗?):
- 不要从根命名空间的子命名空间访问类型。 (例如,
System
中的类型不知道System.Drawing
中的类型)。
此准则是否适用于内部类?为了避免污染我的根 namespace ,我想将我的内部类放在 Jokes.Internal
中。这意味着 Jokes
命名空间 (Jokers
) 中的类型将了解子命名空间 Jokes.Internal
中的类型。这样可以吗?
最佳答案
To avoid polluting my root namespace, I would like to put my internal classes in Jokes.Internal. This would mean that a type in the Jokes namespace (Jokers) would know about types in the subnamespace Jokes.Internal. Is this ok?
是的,没关系。关于不让 namespace 中的类型依赖于“子” namespace 中的类型的主要指南实际上更多地是关于公共(public) API。仅由内部类型使用的内部类和命名空间实际上是一个实现细节,并且在任何此类指南之外。
我会坚持您认为有意义的一致做法。使用内部命名空间似乎是合理的(尽管我可能会做类似命名空间 Jokes.Implementations
的事情)。
此外,鉴于您的 Jokers
类正在构建新实例,它基本上是一个工厂。您可能需要考虑命名更像 JokerFactory
的名称以使其显而易见。 Joker
,对我来说,意味着类中包含一组 Joker
实例,而不是一组工厂方法。
关于c# - 内部类放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3672792/