C#Single与一个类的对象列表

时间:2018-09-11 21:47:00

标签: c#

我有一个从接口继承的类,该类实现了一个保存单个对象的方法,另一个方法保存了类型为iX的对象列表:-

public class XX : iX
{

  public override string A;
  public override string B;

  internal Some_Method(iX item)
    {
       A = item.A; B - item.B;
    }

   private void Single_Save(specific_type x)
    {
      //// some code here ///
    }

   private void Multiple_Save(List<specific_type> x)
    {
      /// some code here ///
    } 

   internal void Save()
    {
      var y = AnotherFunction(this);
      Save(y);
    }

   internal void SaveAll()
    {
      Multiple_Save(that_list);   <----------- how do I get that list ??
    }
}

现在从我的商务舱起,我想做这样的事情:-

public static void SaveObj(iX item)  
 { 
    var singleobj = new XX(item);
    singleobj.Save();
 }

单次保存有效。但是我在编写代码时遇到了问题,这些代码将允许我这样保存对象列表:-

public static void SaveObjects(List<iX> items)
 {
    var multipleobj = new XX(items);   <------- this will not work, because my class is expecting a single object of type iX....
    multipleobj.SaveAll();
 }

**需要注意的是,Multiple_Save和Single_Save方法都使用不同形式的保存信息,并且需要分别用于各个方法,因此无法一次浏览一个项目列表和一次Single_Save。

有人可以指出我应该考虑的概念以解决这种情况吗?

4 个答案:

答案 0 :(得分:0)

如果您有一个单独的collection类,它将简单得多。让XX代表一个项目,如果您想将它们作为一个单元使用,请将它们放到一个集合中。创建集合类很容易(仅继承自List<T>,其所有方法和枚举器都可以从this获得)。例如:

class XXList : List<XX>
{
    public void SaveAll()
    {
        foreach (var xx in this) xx.Save();
    }
}

因此您可以像这样使用它:

var list = new XXList
{
    new XX(item1),
    new XX(item2),
    new XX(item3)
};
list.SaveAll();

答案 1 :(得分:0)

您的类中需要多个构造函数。只要它们具有不同的参数,方法重载就可以创建具有相同名称的多个方法。

示例:

public class XX : IX
{
    public IX SingleItem { get; set; }
    public List<IX> ListOfItems { get; set; }
    public XX(IX item)
    {
        SingleItem = item;
    }
    public XX(List<IX> items)
    {
        ListOfItems = items;
    }
}

如果需要的话,甚至可以将保存方法组合为一个:

public void Save()
{
    if (ListOfItems != null)
    {
        //code to save multiple
    }
    else if (Item != null)
    {
        //code to save one
    }
}

答案 2 :(得分:0)

我不确定您要做什么。我看不到XX类的构造,但创建了一个重载构造函数

public XX(List<yourClass> item)
{

}

这将有您的对象。

答案 3 :(得分:0)

您可以如下使用:

// Create the list
List<ClassName> List = new List<Ix>();

// Create instance of your class
Ix ix = new Ix();

// Add the new object to the list
classList.Add(ix);

您也可以使用类型。

在您的

private void Multiple_Save(List<specific_type> x)
{
  If (x != null)
  {
    foreach (var ix in x) 
        SingleSave(ix);
  /// some code here ///
  }
} 

我相信这需要System.Collections.Generic作为名称空间。