I have a save game editor. It uses a library that can read the file and return it in a form of an object. Within that object is an ItemSave object.
Also, to be able to interpret the data in the ItemSave object, I need more info (from an xml) which I get by a method in my own code that returns the ItemData object. They have all different fields, except of the "id" field. The id field is used to make the connection between the two.
For each ItemData variant (there is about 1500 of those, might expand, out of my control) I can have numerous ItemSave object (eg. a gun will always be called a gun and will always have clip size of 10, but number of bullets loaded may vary, etc).
As you can see, one class is pretty useless without the other, so I'd like to combine them.
Currently, I have an ItemBinder class that holds the reference to both ItemData and ItemSave and also has fields of both of them to flatten it out (So I can access data with ItemBinder.Value, not ItemBinder.ItemSave.Value). However, this is bad code and is hard to maintain.
I could drop all the fields in the ItemBinder and just have the two references and suffer through having longer paths, but I'd like the ItemBinder to seem as "the" class that has all the data, the other two being hidden away.
Additional complication is that I'd have to define several methods in the ItemBinder class that would manipulate data from both of the two classes. That may or may not be a problem depending on solution to this, if there is one.
Also, all data will be a reference type, so that simplifies things a bit.