我有一个从接口继承的类,该类实现了一个保存单个对象的方法,另一个方法保存了类型为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。
有人可以指出我应该考虑的概念以解决这种情况吗?
答案 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作为名称空间。