Ho un editor di giochi salvati. Usa una libreria in grado di leggere il file e restituirlo sotto forma di un oggetto. All'interno di quell'oggetto c'è un oggetto ItemSave.
Inoltre, per essere in grado di interpretare i dati nell'oggetto ItemSave, ho bisogno di più informazioni (da un xml) che ottengo con un metodo nel mio codice che restituisce l'oggetto ItemData. Hanno tutti campi diversi, ad eccezione del campo "id". Il campo id viene utilizzato per stabilire la connessione tra i due.
Per ogni variante ItemData (ce ne sono circa 1500, potrebbe espandersi, fuori dal mio controllo) Posso avere numerosi oggetti ItemSave (ad esempio una pistola sarà sempre chiamata una pistola e avrà sempre una dimensione di clip di 10, ma il numero di proiettili caricati può variare, ecc.)
Come puoi vedere, una classe è piuttosto inutile senza l'altra, quindi mi piacerebbe combinarle.
Attualmente, ho una classe ItemBinder che contiene il riferimento a ItemData e ItemSave e ha anche i campi di entrambi per appiattirlo (in modo che io possa accedere ai dati con ItemBinder.Value, non con ItemBinder.ItemSave.Value). Tuttavia, questo è un codice errato ed è difficile da mantenere.
Potrei rilasciare tutti i campi nell'oggetto ItemBinder e avere solo i due riferimenti e soffrire per avere percorsi più lunghi, ma vorrei che ItemBinder sembrasse la "classe" che ha tutti i dati, mentre gli altri due sono nascosti via.
Una ulteriore complicazione è che dovrei definire diversi metodi nella classe ItemBinder che manipolerebbero i dati da entrambe le classi. Questo può o non può essere un problema a seconda della soluzione a questo, se ce n'è uno.
Inoltre, tutti i dati saranno un tipo di riferimento, in modo da semplificare un po 'le cose.