如果我有两个这样的列表:
IEnumerable<Student> students;
IEnumerable<Teacher> teachers;
我编写了一个方法,将学生列表导出到 XML 文件并获取
IEnumerable<Student>
作为输入。
有没有一种方法可以传入任何一个列表并让该方法导出数据而不必担心它是学生列表或教师列表?
如果我有两个这样的列表:
IEnumerable<Student> students;
IEnumerable<Teacher> teachers;
我编写了一个方法,将学生列表导出到 XML 文件并获取
IEnumerable<Student>
作为输入。
有没有一种方法可以传入任何一个列表并让该方法导出数据而不必担心它是学生列表或教师列表?
列表中的每个项目都需要知道如何导出自己。您需要让每个项目实现一个接口,例如IExportable
具有Export
方法的接口。然后,您可以创建一个方法,例如:
public static void ExportAll(IEnumerable<IExportable> sequence)
{
//...
}
然后,您可以传递知道如何导出自身的任何类型的列表。
IExportable
可能最终ISerializable
适合您,除非您打算使用其他方式导出项目。
从基本抽象类继承,非常适合序列化。
public abstract class Person
{
// your code goes here
// public string FirstName { get; set; }
// public string LastName { get; set; }
}
public class Student : Person
{
// your code goes here
}
public class Teacher : Person
{
// your code goes here
}
public void Export(IEnumerable<Person> persons)
{
// your code goes here
}
在学生和教师上实现 IPerson 接口。然后更改您的 XML 导出方法以接受 IEnumerable。IPerson 接口将具有检索 XML 导出数据所需的方法。