public class Person { private string name = "未設定"; public string Name { get { return name; } set { name = value; } } } public class Child : Person { private string schoolName = "未設定"; public string SchoolName { get { return schoolName; } set { schoolName = value; } } } public class Adult : Person { private string companyName = "未設定"; public string CompanyName { get { return companyName; } set { companyName = value; } } } public class Persons { [XmlArrayItem(Type = typeof(Child)), XmlArrayItem(Type = typeof(Adult))] public Person [] persons; public void SetPersons( Person person1, Person person2, Person person3 ) { persons = new Person[3]; persons[0] = person1; persons[1] = person2; persons[2] = person3; } public void Dump() { foreach( Person person in persons ) { System.Diagnostics.Trace.WriteLine(person.Name); if( person is Child ) { System.Diagnostics.Trace.WriteLine(((Child)person).SchoolName); } else { System.Diagnostics.Trace.WriteLine(((Adult)person).CompanyName); } } } }