Sto cercando di implementare uno standard ISO che per sommario ha il seguente:
- Ci sono
operations(come un'azione in MVC) - Sono presenti rispettivamente
requesteresponseper operazione - Questi
requestseresponseshanno il corrispondenteXSDdi - Questi
XSDstanno cambiando ogni anno (come da mia osservazione)
Ecco le mie sfide per ora:
-
La generazione di classi da
XSDaC#(tramite la riga di comando VS) sono così dolorose. Ci sono alcune classi comeHeadereEnumche sono comuni a questiXSDs ma vengono generate separatamente. -
Ho solo bisogno di proprietà specifiche per ogni
response, gli altri valori saranno mappati alla suaresponsecome valori di ritorno. Che crea un conflitto a causa del mio problema in # 1mapping the header from the request to response is not straightforward because they are of different classes. Same for other classes and enum values.
-
Posso mappare manualmente questi valori da
requestaresponsedi tutto iloperationsdi cui ho bisogno. Ma ora il mio problema è l'articolo 4 dal mio riassunto sopra. QuestiXSDstanno ricevendo aggiornamenti all'anno. Ho visto una quantità considerevole di cambiamenti dalla versione dello scorso anno ad ora come nuovi valori aggiunti a enum e nuovi elementi in XML.
Ecco i miei pensieri per la prossima azione:
- Esiste un generatore di classi da
XSDaC#che sia abbastanza intelligente da non duplicare le classi e le enumerazioni comuni? Questo risolverà principalmente il mio problema in quanto il mappatore sarà facilmente creato. Ma farlo manualmente è un problema di scadenze e anche la modifica diXSD. - Se il n. 1 non è una soluzione fattibile, penso a
PropertyCopiersche può mappare valori di classi diverse. Ma non ho cercato su tali copiatrici che possano mappare classi annidate (deep copier di proprietà). Mi baserei solo supropertyNamesche posso dire non è abbastanza affidabile e la riflessione è piuttosto lenta. -
La mia ultima risorsa sta facendo manualmente il mapper come:
DifferentClass1.SamePropertyName1 = DifferentClass2.SamePropertyName1
e basta fare di nuovo un altro mapper il prossimo anno quando arriverà la versione successiva.