【发布时间】:2010-11-22 10:00:16
【问题描述】:
我向多个人提出了这个问题,直到现在我都没有答案。
ASP.NET C#
项目树(文件和文件夹):
> (ROOT)
>
> Class MyAccess (namespace myproject.core)
>
> (Directory John)
------> Class MyJohn (namespace myproject.core.John)
------> Class JohnSecret (namespace myproject.core.John)
------> Class OtherJohnSecret (namespace myproject.core.John)
>
> (Directory Paul)
------> Class MyPaul (namespace myproject.core.Paul)
------> Class PaulSecret (namespace myproject.core.Paul)
我如何使用(公共的、私有的、受保护的、内部的)??????有这种行为:
- class MyJohn 看到并可以从 John 文件夹中的所有类创建对象(他的所有秘密)
- 类 MyPaul 具有相同的行为,但在 Paul 文件夹中
- 所有这些秘密都不能在这个文件夹之外使用。
例子:
- MyPaul 可以使用他的所有秘密,并且可以与 MyAccess 和 MyJohn 类进行通信。
- MyPaul、MyJohn、MyAccess 将是公开的或内部的
- MyAccess 无法使用 PaulSecret。
我不喜欢的解决方案:
- 糟糕的解决方案 1
让约翰的秘密成为受保护和继承的 MyJohn
例子:
> protected JohnSecret
> internal MyJohn:JohnSecret
不好,因为如果我有 100 个班级机密,我需要有类似的东西:
> internal MyJohn:JohnSecret1, JohnSecret2,....,JohnSecret100
- 糟糕的解决方案 2
类中有类:
> internal class MyJohn {
>
> internal string DoSomething(){}
>
> private class JohnSecret{}
> private class JohnSecret2{}
> private class JohnSecret3{}
>
> }
这不好,因为再一次,如果我有 100 个秘密,我将拥有一个巨大的文件,我无法将该代码拆分到不同的源代码文件中。
谁能给出一个好的解决方案?
我很感激:)
非常感谢。
【问题讨论】:
-
为什么需要这么多秘密课程?
-
如果你有如此复杂的访问修饰符的情况,我想你的情况一定有其他问题。
-
当我们的代码将由一个团队(多人编码 -> CVS 控件)开发时出现这个问题,有时使用 Visual Studio 的 IntelliSense,我们可以访问一个类(在其他一些代码目录中) 不应该直接使用。这就是为什么我问我们如何才能避免这种情况。
标签: asp.net class namespaces