using System.Collections.Generic;
public static void Main()
var justus = new Person() {FirstName = "Justus", LastName = "Jonas"};
justus.ShippingAddress = new Address() {StreetAddress = "Jonas Street", City = "Rocky Beach", State = "CA", PostalCode = "99999", Country = "USA"};
var peter = new Person() {FirstName = "Peter", LastName = "Shaw"};
peter.ShippingAddress = new Address() {StreetAddress = "Shaw Ave", City = "Rocky Beach", State = "CA", PostalCode = "99999", Country = "USA"};
var bob = new Person() {FirstName = "Bob", LastName = "Andrews"};
bob.ShippingAddress = new Address() {StreetAddress = "Andrew Blvd", City = "Rocky Beach", State = "CA", PostalCode = "99999", Country = "USA"};
var gebrauchtwarenCenterTJonas = new Company() {Name = "GebrauchtwarenCenterTJonas"};
gebrauchtwarenCenterTJonas.ShippingAddress = new Address() {StreetAddress = "Jonas Street", City = "Rocky Beach", State = "CA", PostalCode = "99999", Country = "USA"};
var hitchcock = new Company() {Name = "Alfred Hitchcock Ltd"};
hitchcock.ShippingAddress = new Address() {StreetAddress = "Hollywood Blvd", City = "Los Angeles", State = "CA", PostalCode = "11111", Country = "USA"};
var addressbook = new List<Member>();
addressbook.Add(gebrauchtwarenCenterTJonas);
addressbook.Add(hitchcock);
foreach (Member member in addressbook)
public abstract class Member
public abstract void printMember();
public string StreetAddress { get; set; }
public string City { get; set; }
public string State { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
public void printAddress(Member currentMember)
Console.WriteLine(this.StreetAddress);
Console.WriteLine(this.City + " " + this.State + "-" + this.PostalCode);
Console.WriteLine(this.Country);
public class Person : Member
public string FirstName { get; set; }
public string LastName { get; set; }
public Address ShippingAddress { get; set; }
public override void printMember()
Console.WriteLine(this.FirstName + " " + this.LastName);
this.ShippingAddress.printAddress(this);
public class Company : Member
public string Name { get; set; }
public Address ShippingAddress { get; set; }
public override void printMember()
Console.WriteLine(this.Name);
this.ShippingAddress.printAddress(this);