首页 > 解决方案 > 如何使与类位于同一名称空间中的类可以访问变量,但名称空间之外的类在 C# 中不可以访问?

问题描述

namespace ExampleNamespaceOne {
    public class ExampleClassOne {
        public float Example = 0.5f;
    }
    public class ExampleClassTwo {
        // Has access to example.
    }
}

namespace ExampleNamespaceTwo {
    public class ExampleClassOne {
        // Doesn't have access to example.
    }
}

以这段代码为例。我希望 ExampleNamespaceOne 中的 ExampleClassOne 中的 Example 变量可以被其命名空间中的任何类访问。所以我希望 ExampleClassTwo 能够访问它(因为它在同一个命名空间中),但我不希望 ExampleNamespaceTwo 中的 ExampleClassOne 能够访问它(因为它在不同的命名空间中)。

标签: c#

解决方案


你不能,命名空间只是一个方便的工具来分类类型和避免名称冲突。

为了或多或少地实现您想要的,您需要:

  1. ExampleNameSpaceOne使用命名空间和其中包含的类型创建一个程序集。
  2. 制作ExampleClassOne.Example internal

现在在任何其他程序集中定义的任何类型都将无法看到Example

当然Example,通过反射总是可以到达的,但你不能阻止它。


推荐阅读