C# 我如何组织这些结构?
我有许多不同的结构,如下面所示(显然有点复杂和复杂),我想从ABC中的方法中访问私有变量和方法,同时使这些相同的变量和方法在MyMainClass之外不可见;我知道我可以通过反思来解决这个问题,但我不想走这条路。我肯定这里有人也遇到过类似的问题——你是怎么解决的C# 我如何组织这些结构?,c#,class,methods,struct,hide,C#,Class,Methods,Struct,Hide,我有许多不同的结构,如下面所示(显然有点复杂和复杂),我想从ABC中的方法中访问私有变量和方法,同时使这些相同的变量和方法在MyMainClass之外不可见;我知道我可以通过反思来解决这个问题,但我不想走这条路。我肯定这里有人也遇到过类似的问题——你是怎么解决的 public class MyMainClass { public struct SStruct { private ulong myInternalVar; public ulong Inte
public class MyMainClass {
public struct SStruct {
private ulong myInternalVar;
public ulong InternalVar{ get{ return myInternalVar; } }
}
public void ABC() {
SStruct val1=new SStruct();
val1.gElementID=101;
}
}
您可以将私有字段标记为内部字段,以便字段在其驻留的程序集外部不可见。您可以将私有字段标记为内部字段,以便字段在其驻留的程序集外部不可见。如果嵌套类型需要是
公共的,则无法实现所需的功能。与您所假装的最接近的解决方案是创建一个内部设置器,这样它在程序集之外就不可用了。不管怎样,我不知道你想要达到什么,为什么
我的建议是,考虑到可用的小信息,可以考虑将结构实现为不可变类型(可变结构是邪恶的),然后重载构造函数来设置内部状态。这并不能解决您面临的问题,它只是对您的一般设计的一条建议。
如果嵌套类型需要是公共的
,则无法实现您想要的功能。与您所假装的最接近的解决方案是创建一个内部设置器,这样它在程序集之外就不可用了。不管怎样,我不知道你想要达到什么,为什么
我的建议是,考虑到可用的小信息,可以考虑将结构实现为不可变类型(可变结构是邪恶的),然后重载构造函数来设置内部状态。这并不能解决您所面临的问题,它只是对您的一般设计的一条建议。
因为ssstruct
声明嵌套在MyMainClass
中,这意味着ssstruct
旨在支持MyMainClass
,不可供课外使用。如果是这种情况,解决问题的最简单方法是将结构声明为私有
,然后使私有
成员公共
或内部
。现在,其他类无法访问成员(因为它们根本无法访问结构),而MyMainClass
可以
如果您在其他地方实际使用的是ssstruct
,我建议您在任何其他类之外声明它,这样就可以清楚地知道它是以这种方式使用的
最后,您通常应该避免可变值类型。创建设置所需状态的构造函数,然后让struct
以这种方式生存。如果您需要“修改”它,那么这样做的方法应该返回一个新创建的具有所需状态的实例。由于ssstruct
声明嵌套在MyMainClass
中,这意味着ssstruct
旨在支持MyMainClass
,不可供课外使用。如果是这种情况,解决问题的最简单方法是将结构声明为私有
,然后使私有
成员公共
或内部
。现在,其他类无法访问成员(因为它们根本无法访问结构),而MyMainClass
可以
如果您在其他地方实际使用的是ssstruct
,我建议您在任何其他类之外声明它,这样就可以清楚地知道它是以这种方式使用的
最后,您通常应该避免可变值类型。创建设置所需状态的构造函数,然后让struct
以这种方式生存。如果您需要“更改”它,那么执行此操作的方法应该返回一个新创建的具有所需状态的实例。谢谢大家的评论。:)谢谢大家的评论。:)