我已经创建了一个名为ClientCapsule的类,它包含关于客户机的数据,这个类包含我在同一个作用域中创建的名为ClientInformation的另一个类。
我不想允许在ClientInformation之外创建ClientCapsule类,但是我希望允许ClientInformation实例作为ClientCapsule的成员,并允许在创建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;
但我发现了一个错误:
不一致的可访问性字段类型
ClientInformation比字段ClientCapsule.clientInfo更难访问。
发布于 2017-01-26 22:03:59
听起来,您需要ClientInformation作为一个公共类--只需给它一个内部构造函数,防止从其他地方实例化。
发布于 2017-01-26 22:05:27
因为在您的公共类中有:public readonly ClientInformation clientInfo;,所以ClientInformation必须是公共的。除了其他人提到的有内部构造函数之外,您还可以使用接口。
发布于 2017-01-26 22:06:48
您的clientinfo可访问性是public,但是clientinfo是ClientInformation类型变量,而ClientInformation可访问性不是public。
因此,ClientInformation比字段ClientCapsule.clientInfo更难访问。
https://stackoverflow.com/questions/41883770
复制相似问题