public class Person { private string name = "ݒ"; private int age = 0; public string Name { get { return name; } set { name = value; } } public int Age { get { return age; } set { age = value; } } } public class EnumerablePersons : IEnumerable { public class PersonsEnumerator : IEnumerator { private ArrayList personsList; private int pointer; public object Current { get { return personsList[pointer]; } } public bool MoveNext() { pointer ++; if( pointer >= personsList.Count ) return false; return true; } public void Reset() { pointer = -1; } public PersonsEnumerator( ArrayList personsList ) { this.personsList = (ArrayList)personsList.Clone(); Reset(); } } public IEnumerator GetEnumerator() { return new PersonsEnumerator(PersonsList); } public string ID = "abc"; private ArrayList PersonsList = new ArrayList(); public void Add( object person ) { PersonsList.Add( person ); } } public class Persons { [XmlArrayItem(Type = typeof(Person))] public EnumerablePersons PersonsList; public void SetPersons( Person person1, Person person2, Person person3 ) { PersonsList = new EnumerablePersons(); PersonsList.Add( person1 ); PersonsList.Add( person2 ); PersonsList.Add( person3 ); } public void Dump() { foreach( Person person in PersonsList ) { System.Diagnostics.Trace.WriteLine(person.Name); System.Diagnostics.Trace.WriteLine(person.Age); } } }