C # cambiando il problema di XSD

1

Sto cercando di implementare uno standard ISO che per sommario ha il seguente:

  1. Ci sono operations (come un'azione in MVC)
  2. Sono presenti rispettivamente request e response per operazione
  3. Questi requests e responses hanno il corrispondente XSD di
  4. Questi XSD stanno cambiando ogni anno (come da mia osservazione)

Ecco le mie sfide per ora:

  1. La generazione di classi da XSD a C# (tramite la riga di comando VS) sono così dolorose. Ci sono alcune classi come Header e Enum che sono comuni a questi XSD s ma vengono generate separatamente.
  2. Ho solo bisogno di proprietà specifiche per ogni response , gli altri valori saranno mappati alla sua response come valori di ritorno. Che crea un conflitto a causa del mio problema in # 1

    mapping the header from the request to response is not straightforward because they are of different classes. Same for other classes and enum values.

  3. Posso mappare manualmente questi valori da request a response di tutto il operations di cui ho bisogno. Ma ora il mio problema è l'articolo 4 dal mio riassunto sopra. Questi XSD stanno 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:

  1. Esiste un generatore di classi da XSD a C# 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 di XSD .
  2. Se il n. 1 non è una soluzione fattibile, penso a PropertyCopiers che 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 su propertyNames che posso dire non è abbastanza affidabile e la riflessione è piuttosto lenta.
  3. 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.

posta KaeL 06.06.2018 - 05:55
fonte

1 risposta

1

Mentre continuo la mia ricerca per giorni, dato che XML e XSD sono stati lunghi su enterprise products , il mio problema è stato sperimentato anche da altri sviluppatori.

  1. If #1 is not a feasible solution, I am thinking of PropertyCopiers which can map values from different classes. But I haven't searched of such copiers that can map nested classes (deep property copiers). I would only rely on propertyNames which I can say is not reliable enough and reflection is quite slow.

Poiché ancora XSD.exe è ampiamente utilizzato per generare C# classi, il conflitto in namespaces , classes , enumerations e altri sono stati risolti (in un modo) utilizzando AutoMapper - un mapper object-to-object del pacchetto nuget con molte funzionalità.

Sto ancora imparando ed esplorando come utilizzare questa libreria, ma sono ancora aperto alle risposte.

    
risposta data 11.06.2018 - 04:00
fonte

Leggi altre domande sui tag