Simply put yes, its not good form to do this and I'll tell you why, a. A bit later when your solution becomes big you will forget where the classes are as the file name will no longer represent what the contents are, whats theWhat's your filename? Is it AnimalPersonObject.cs thats just, that's not feasible.clear its multiple classes rather a single class called AnimalPersonObject
Sure you can get around this by using features in tools like resharperResharper to jump to types, but 1 class per file (including interfaces) is really the backbone of any code standard I've ever seen, not just in .netNet but in javaJava and c++C++ and lots of other languages, those that don't often have maintainancemaintenance issues and. As currently written you will find junior devsdevelopers finding it hard to grasp the code.
Almost all code optimisation tools will tell you to move the classes into a seperateseparate file, so for me yes this is a code smell and needs some oustsomething to neutralise it :)