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
,但 clientinfo
是 ClientInformation
类型变量并且 ClientInformation
可访问性不是 public
。
So ClientInformation is less accessible than field
ClientCapsule.clientInfo
我创建了一个名为 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 fieldClientCapsule.clientInfo
听起来你需要 ClientInformation
才能成为 public class - 只需给它一个内部构造函数,防止从其他地方实例化。
因为您的 public class 中有 public readonly ClientInformation clientInfo;
,ClientInformation 必须是 public。除了其他人提到的拥有内部构造函数之外,您还可以使用接口来代替。
您的 clientinfo
可访问性是 public
,但 clientinfo
是 ClientInformation
类型变量并且 ClientInformation
可访问性不是 public
。
So ClientInformation is less accessible than field ClientCapsule.clientInfo