类访问修饰符 - 内部

时间:2017-01-26 22:02:13

标签: c# class enums internal access-modifiers

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

我不想允许在ClientInformation之外创建ClientCapsule类,但我想允许ClientInformation实例作为ClientCapsule的成员并允许访问创建ClientInformation实例时ClientCapsule个成员。

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

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;

但是我收到了一个错误:

  

不一致的辅助功能字段类型ClientInformation比字段ClientCapsule.clientInfo

更难访问

3 个答案:

答案 0 :(得分:3)

听起来你需要ClientInformation成为公共类 - 只需给它一个内部构造函数,防止来自其他地方的实例化。

答案 1 :(得分:0)

由于您的公共类中有public readonly ClientInformation clientInfo;,因此ClientInformation必须是公开的。除了其他人提到的内部构造函数之外,您还可以使用接口。

答案 2 :(得分:0)

您的clientinfo辅助功能为public,但clientinfoClientInformation类型变量且ClientInformation辅助功能不是public

  

因此,ClientInformation比字段更难访问   ClientCapsule.clientInfo