Change the name - it is confused because it finds the class definition of that name before it looks for the static variable declaration:
...
contactDetailEmail.Add(new ContactDetailEmail());
contactDetailFax.Add(new ContactDetailFax());
}
protected static List<ContactDetailEmail> contactDetailEmail = new List<ContactDetailEmail>();
protected static List<ContactDetailFax> contactDetailFax = new List<ContactDetailFax>();