c# - 如何使与类位于同一名称空间中的类可以访问变量,但名称空间之外的类在 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 能够访问它(因为它在不同的命名空间中)。
解决方案
你不能,命名空间只是一个方便的工具来分类类型和避免名称冲突。
为了或多或少地实现您想要的,您需要:
ExampleNameSpaceOne
使用命名空间和其中包含的类型创建一个程序集。- 制作
ExampleClassOne.Example
internal
现在在任何其他程序集中定义的任何类型都将无法看到Example
。
当然Example
,通过反射总是可以到达的,但你不能阻止它。
推荐阅读
- python-3.x - Python 日期时间时区偏移
- r - Ggplot2 上的双 y 轴
- python - 用字典解析多列表
- c# - 用户输入的字符串插值
- tensorflow-serving - 在 python 进程中直接使用 TensorFlow Serving 作为库
- kubernetes - 更改quarkus hazelcast集群成员ip
- python - Python在比较我的数据框中的两列后创建和追加行
- reactjs - “GET https://graph.microsoft.com/v1.0/me 401(未经授权)”:为什么我无法访问 Microsoft Graph API?
- axios - 从 axios 正文到输入下的打印错误
- javascript - 使用 Jquery 滑块过滤帖子