gpt4 book ai didi

asp.net - C# 类/命名空间访问

转载 作者:行者123 更新时间:2023-12-04 16:53:14 25 4
gpt4 key购买 nike

我向很多人问过这个问题,直到现在我都没有答案。

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)

我如何使用(公共(public)、私有(private)、 protected 、内部)????有这种行为:
  • 类 MyJohn 可以看到并可以从 John 文件夹中的所有类创建对象(所有他的 secret )
  • 类 MyPaul 具有相同的行为,但在 Paul 文件夹中
  • 所有这些 secret 都不能在这个文件夹之外使用。

  • 例子:
  • MyPaul 可以使用他的所有 secret ,并且他可以与类 MyAccess 和 MyJohn 进行通信。
  • MyPaul、MyJohn、MyAccess 将是公开的或内部的
  • MyAccess 不能使用 PaulSecret。


  • 我不喜欢的解决方案:
  • 错误的解决方案 1

  • 让约翰的 secret 成为 protected 遗产,成为 MyJohn

    例子:
    > protected JohnSecret
    > internal MyJohn:JohnSecret

    不好,因为如果我有 100 个类(class) secret ,我将需要以下内容:
    > internal MyJohn:JohnSecret1, JohnSecret2,....,JohnSecret100
  • 错误的解决方案 2

  • 在类中有类:
    > internal class MyJohn {
    >
    > internal string DoSomething(){}
    >
    > private class JohnSecret{}
    > private class JohnSecret2{}
    > private class JohnSecret3{}
    >
    > }

    这不好,因为再一次,如果我有 100 个 secret ,我将拥有一个巨大的文件,我无法将该代码拆分到不同的源代码文件中。

    谁能给出一个好的解决方案?

    我很欣赏:)

    非常感谢。

    最佳答案

    您应该采用您提出的第二种解决方案。对于您的可见性要求,它最适合 JohnSecret , OtherJohnSecret ,等。阿尔。在 MyJohn 中定义类(class)。

    如果您希望将类文件拆分为多个文件,可以使用 partial classes以实现这一目标并仍然保持您拥有的可见性要求。

    例如:

    > (Directory John)
    > File "MyJohn.cs"
    public partial class MyJohn
    {
    }

    > File "JohnSecret.cs"
    public partial class MyJohn
    {
    private class JohnSecret
    {
    }
    }

    > File "OtherJohnSecret.cs"
    public partial class MyJohn
    {
    private class OtherJohnSecret
    {
    }
    }

    关于asp.net - C# 类/命名空间访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324629/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com