类文件和集合

本文关键字:集合 文件 | 更新日期: 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语句后面还缺少一个分号。