I am trying to design an object model (for C#), and can’t work out the best way to store the data. I’ll try to use a simple example to illustrate this!
I have an object ‘pet’, which could be one of, ‘cat’, ‘dog’ etc. So I have created an ‘pet’ class with a ‘petType’ enum to store this.
Now this is where it gets tricky. If an ‘pet’ is a ‘cat’, then its ‘food’ could be one of ‘fish’, ‘milk’ etc. If it is a ‘dog’ then its ‘food’ could be ‘meat’, ‘biscuits’ or something.
Now should I create a big enum for ‘fish’, ‘milk’, ‘meat’ and ‘biscuits’ and somehow code it so that a ‘cat’ cannot be assigned ‘food.meat’? It wouldnt really make sense for my ‘pet’ class to have a ‘catfood’ and ‘dogfood’ enum, because thats not extensible and it will end up storing loads of enums that are null.
Is there an elegant solution to this that I’m not seeing?
Try #2. Seems to be correct