类文件和集合
本文关键字:集合 文件 | 更新日期: 2023-09-27 18:11:29
我有一个类似于下面结构的类文件。基本上,objALLData是我的主要数据对象(它收集来自用户的信息并将其插入到DB中)。然而,在objAllData中,我需要有 objSubSet1和/或objSubSet2的集合的选项。但是,这两个子集不需要都是公共的。所有我需要他们做的是填充,然后在objAllData我将它们添加到一个集合(在objAllData指定)。
当我试图使子集类私有时,我得到了一个不一致的可访问性错误。根据我的研究,我需要把它们公之于众。然而,我真的不希望任何人知道这些对象,除了objAllData。明白了吗?
你知道我怎样才能达到我想要的吗?:)
public class objAllData
{
List<objSubSet1> ss1 = new List<objSubSet1>();
List<objSubSet2> ss2 = new List<objSubSet2>();
public List<objSubSet1> addSS1toCollection()
{
objSubSet1 myOBJSS1 = new objSubSet1();
myOBJSS1.property = "";
ss1.add(myOBJSS1);
return ss1;
}
}
public class objSubSet1
{
<property>
<property>
<property>
}
public class objSubSet2
{
<property>
<property>
<property>
}
由于您的add方法返回列表,因此用户需要对您返回的类型有一定的可见性。不完全暴露真实对象类型的最简单方法是创建一个接口。
public interface Thing {
//public methods
}
public class ObjAllData {
public List<Thing> addSS1toCollection() {
List<ObjSubSet1> ss1 = new List<objSubSet1>();
ss1.add(new ObjSubSet1());
return ss1;
}
private class ObjSubSet1 : Thing {
//implements public methods
}
}
这样,用户只能访问由Thing
定义的方法,而ObjAllData
拥有对真实对象类型的完全访问权。
注意:您的示例代码有许多语法错误,这些错误将使您的代码无法编译。
类定义中没有括号
public class objAllData() //incorrect
public class ObjAllData //correct
函数定义必须指定它们返回的变量类型,而不是变量名。
public ss1 addSS1toCollection() //incorrect
public List<objSubSet1> addSS1toCollection() //correct
在return语句后面还缺少一个分号。