c# - 如何在 C# 中通过所有者控制类可见性

标签 c# class visibility

我经常希望某些类 C1 的某些(或全部)函数只能从另一个类 C2 中访问,因为 C2 是一种代理,它拥有 C1 类型的对象(例如:类“Neuron”的方法,如“connect()”,只能从“Brain”访问)。我认为这在 C# 中无法直接实现,这与继承不同,在继承中我们可以使用“private”或“protected”等关键字指定可见性。

在这种情况下,最佳做法是什么?

最佳答案

为您的类创建一个程序集,并将外部世界不可见的内部类声明为internal:

internal (C# Reference):

The internal keyword is an access modifier for types and type members. Internal types or members are accessible only within files in the same assembly

所以,像这样:

namespace YourAssembly.Classes
{
    internal class C1
    {
        public void Foo()
        {
        
        }
    }
    
    public class C2
    {
        public void DoFoo()
        {
            new C1().Foo();     
        }
    }
}

此处 C2 可从其他程序集访问,而 C1 只能从同一程序集中访问。

关于c# - 如何在 C# 中通过所有者控制类可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023249/

相关文章:

c# - 如何将 mysql 查询转换为可接受的 c# 字符串?

class - 如何为 Stateful Widget 创建 Flutter 路由?

c++ - 在 GCC 中,如何在不导出所有符号的情况下导出共享库的所有类型信息符号?

c# - .Net Core 2.1项目,为什么Nuget会还原.Net 4.6.1包?

c# - 如何使用适用于 Windows 8 的 Visual Studio Express 2012 创建适用于 Windows XP 的应用程序

c# - WPF 将绑定(bind)传递到我的用户控件

php - PDO 无法连接到数据库

java - 如何确定 Java 类使用了哪些方法

javascript - 如何在链接栏下隐藏和显示内容?

go - Go中嵌入式私有(private)接口(interface)的可见性