2011-09-13 2 views
203

Non riesco a trovare lo spazio dei nomi da utilizzare per gli elementi [DataContract] e [DataMember]. Secondo quello che ho trovato, sembra che aggiungere quanto segue dovrebbe essere sufficiente, ma nel mio caso non lo è.Spazio dei nomi per [DataContract]

using System; 
using System.Runtime.Serialization; 

Ecco un frammento del mio codice:

using System; 
using System.Runtime.Serialization; 

namespace MyNamespace { 

    [DataContract] 
    public class Tuple<T1, T2> { 
      // A custom implementation of a Tuple 
      //... 
      //... 
     } 
} 

E l'errore che ottengo:

Il tipo o dello spazio dei nomi il nome 'DataContract' non è stato trovato (le manca una direttiva using o un riferimento assembly?)

Non sto utilizzando i namespace giusti ?

+0

Utilizzo di VS 2017, errore del compilatore, impossibile creare, nessun messaggio nella lista errori o nessuna indicazione. Nessuna colorazione della sintassi di DataContract, niente. – dudeNumber4

+0

@ dudeNumber4 Fare clic con il pulsante destro del mouse sul progetto Aggiungi/Riferimento. Nella finestra di dialogo trova System.Runtime.Serialization e make checkbox status. Quindi premere "Ok" –

risposta

375

DataContractAttribute La classe è nello spazio dei nomi System.Runtime.Serialization.

Ma si dovrebbe aggiungere il riferimento ai System.Runtime.Serialization.dll

E assembly non si fa riferimento per impostazione predefinita, in modo da avere per andare Riferimenti -> Aggiungi riferimento in Esplora soluzioni e aggiungere un riferimento all'assembly

+56

....e quell'assembly non è referenziato di default, quindi devi andare a 'Riferimenti -> Aggiungi riferimento' in Solution Explorer e aggiungere un riferimento all'assembly ... –

+10

Ecco, non avevo il riferimento nella mia soluzione! Ho pensato che se fosse necessario un riferimento, mi avrebbe ottenuto un errore sulla linea 'using System.Runtime.Serialization;'. Immagino di aver sbagliato :) – Otiel

+0

Grazie per questo compagno. – TheGateKeeper

4

l'attributo [DataContract] e [DataMember] si trovano nello spazio dei nomi System.ServiceModel che si trova in System.ServiceModel.dll.

System.ServiceModel utilizza gli spazi dei nomi System.Runtime.Serialization per serializzare i datamembers.

0

Innanzitutto, aggiungo i riferimenti al mio modello, quindi li utilizzo nel mio codice. Ci sono due riferimenti da aggiungere:

utilizzando System.ServiceModel;
utilizzando System.Runtime.Serialization;

quindi, questo problema è stato risolto nel mio programma. Spero che questa risposta possa aiutarti. Grazie.

3

In studio visivo per NET 4.0 quadro,

  1. tenta di aggiungere nuovo riferimento a progetto.
  2. Nella scheda .Net, ricerca System.Runtime.Serialization.
  3. Ora è possibile utilizzare using System.Runtime.Serialization. E l'errore non verrà mostrato.