Проще говоря, это нехорошо для этого, и я скажу вам, почему, чуть позже, когда ваше решение станет большим, вы забудете, где находятся классы, так как имя файла больше не будет представлять, каково содержимое, каково имя файла. AnimalPersonObject.cs это просто невозможно.
Конечно, вы можете обойти это, используя функции инструментов, таких как resharper, для перехода к типам, но 1 класс на файл (включая интерфейсы) действительно является основой любого стандарта кода, который я когда-либо видел, не только в .net, но и в java и c ++ и многие другие языки, те, которые не часто имеют проблемы с сопровождением, и вы найдете младших разработчиков, которым сложно понять код.
Почти все инструменты оптимизации кода скажут вам переместить классы в отдельный файл, так что для меня да, это запах кода, и его нужно нейтрализовать :)