Approccio di progettazione comune quando si utilizza la classe serializzata da XSD

0

Sto creando un assembly Parser in C # per analizzare una struttura XML. Ho uno schema XML definito per i file XML.

Utilizzando lo strumento XSD ho creato strutture di classe da XML Schema. L'XML ha vari livelli gerarchici. Quindi ci sono molte strutture di classe disponibili.

Ora nel mio assieme Parser ho un codice serializzato che deserializza il file XML e fornisce l'oggetto dell'oggetto di classe di livello superiore che avrà internamente oggetti di livello successivo.

Voglio fornire API ai client che stanno accedendo al mio assembly. Quindi, dopo aver deserializzato l'XML, memorizzo l'oggetto di livello superiore nel mio parser e accedo all'oggetto da dove è richiesto. Quindi fornirò più API nella mia classe parser per ottenere i dati. È giusto mantenere i metodi per accedere ai dati in Parser stesso? oppure posso implementare i metodi nelle classi corrispondenti che sono stati generati usando lo strumento XSD?

Esiste un approccio progettuale comune che può essere utilizzato per questo caso?

    
posta Rajesh Subramanian 13.06.2018 - 13:04
fonte

1 risposta

2

AFAIK le classi generate sono tutte parziali, quindi tecnicamente è possibile aggiungere i propri metodi a loro facilmente in file separati, che non si perdono quando si rigenera nuovamente le classi. In alternativa, puoi anche utilizzare i metodi di estensione o semplicemente classi aggiuntive oltre a quelle generate.

Tuttavia, quale di quei metodi che hai intenzione di esporre in pubblico ai client della tua API è fino a tu - è una decisione che tu devi fare, conoscendo i singoli requisiti di il tuo progetto . Metodi che hanno senso solo per il parser probabilmente non sono buoni candidati per essere esposti. I metodi che possono essere riutilizzati in altri contesti possono essere candidati ragionevoli. Ma per prendere una decisione, è necessario conoscere i singoli metodi e il contesto individuale.

In caso di dubbio, parla ai tuoi clienti che cosa si aspettano dalla tua API.

    
risposta data 13.06.2018 - 15:56
fonte

Leggi altre domande sui tag