Class 访问修饰符 - 内部

Class Access Modifiers - internal

我创建了一个名为 ClientCapsule 的 class,其中包含有关客户端的数据, 此 class 包含我在同一范围内创建的另一个 class,名为 ClientInformation

我不想允许在 ClientCapsule 之外创建 ClientInformation class,但我想允许 ClientInformation 实例作为 [= 的成员12=] 并在创建 ClientCapsule 实例时允许访问 ClientInformation 成员。

这是我正在尝试做的一个例子:

namespace AdminServer
{
    public enum ClientOperation
    {
        Subscribe,
        GetTables
    }

    [Serializable]
    internal class ClientInformation
    {

    }

    [Serializable]
    public class ClientCapsule
    {


        public readonly IPHostEntry clientMetaData;

        public readonly ClientOperation clientRequestedOperation;

        public readonly ClientInformation clientInfo;
    }
}

所以我将无法超出此范围:ClientInformation object = new ClientInformation()

但我可以做到:ClientCapsule object = new ClientCapsule(),object.ClientInformation.members;

但我收到一个错误:

Inconsistent accessibility field type ClientInformation is less accessible than field ClientCapsule.clientInfo

听起来你需要 ClientInformation 才能成为 public class - 只需给它一个内部构造函数,防止从其他地方实例化。

因为您的 public class 中有 public readonly ClientInformation clientInfo;,ClientInformation 必须是 public。除了其他人提到的拥有内部构造函数之外,您还可以使用接口来代替。

您的 clientinfo 可访问性是 public,但 clientinfoClientInformation 类型变量并且 ClientInformation 可访问性不是 public

So ClientInformation is less accessible than field ClientCapsule.clientInfo