Utilizzando la libreria di classe .NET 2.0 da Silverlight WCF Service, le proprietà pubbliche rimangono non esposte

StackOverflow https://stackoverflow.com/questions/1396576

  •  22-09-2019
  •  | 
  •  

Domanda

Ecco un po 'di sottile problema con cui ho a che fare e apprezzerei qualsiasi aiuto.

Abbiamo il nostro progetto in modalità di produzione, costruito con .NET 2.0. Di recente abbiamo sviluppato un'applicazione Silverlight esterna alla soluzione 2.0 e "parla" con un servizio WCF. Questo servizio consuma DLLS che copriamo dalle nostre cartelle di pubblicazione della soluzione 2.0, al fine di accedere alla funzionalità dalla nostra soluzione originale.

Il servizio WCF sta esponendo diversi metodi e oggetti provenienti dalla nostra soluzione 2.0. Ovviamente, utilizza internamente [DataContract] S e [DataMember] e quelli non sono disponibili nella nostra soluzione originale (poiché è .NET 2.0, e a questo punto l'aggiornamento a 3.5 non è un'opzione). Fortunatamente, WCF è in grado di trattare i nostri oggetti serializzabili come se fossero definiti come contratti, ma per qualche strana ragione solo le variabili membri (anche se definite come private!) Vengono serializzate; Le proprietà, anche impostabili e pubbliche non sono mai serializzate.

Le nostre classi di oggetti di cui abbiamo bisogno esposte hanno definito [serializzabile ()]. Mi sono guardato intorno e non sono riuscito a trovare una buona soluzione / spiegazione a questo. Probabilmente ha a che fare con come .NET 3.0/3.5 è "vedere" i miei oggetti 2.0 (presuppone [Datamember] solo su variabili e mai su proprietà).

La mia domanda è principalmente come esporre solo proprietà pubbliche e mai variabili private?

Grazie in anticipo per qualsiasi intuizione su questo.

Itamar.

È stato utile?

Soluzione

La ragione di ciò rimane sconosciuta. Abbiamo bypassato questo problema derivando dall'oggetto esposto (risiedendo nelle DLL compilate che stiamo usando attraverso il progetto WCF) e quindi ricreare le proprietà e le funzioni di supporto di cui abbiamo bisogno. Aggiungiamo anche nuove proprietà o variabili membri ove necessario. Quindi usiamo quel nuovo oggetto internamente (questo a volte richiede un costruttore specializzato per apportare alcune copie o aggiustamenti). Non è l'ideale, ma il lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top