Spazio dei nomi per [DataContract]


230

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

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:

Impossibile trovare il tipo o il nome dello spazio dei nomi 'DataContract' (ti manca una direttiva che utilizza o un riferimento di assembly?)

Non sto usando gli spazi dei nomi giusti?


Utilizzando VS 2017, errore del compilatore, impossibile compilare, nessun messaggio nell'elenco degli errori o alcuna indicazione. Nessuna colorazione della sintassi di DataContract, niente.
dudeNumber4,

@ dudeNumber4 Fai clic destro sul tuo progetto Aggiungi / Riferimento. Nella finestra di dialogo trova System.Runtime.Serialization e imposta lo stato di controllo della casella di controllo. Quindi premi "Ok"
Sim Mak

Risposte:


433

DataContractAttributeLa classe è nello System.Runtime.Serializationspazio dei nomi.

È necessario aggiungere un riferimento a System.Runtime.Serialization.dll. Tuttavia, tale assembly non fa riferimento per impostazione predefinita. Per aggiungere il riferimento al tuo progetto devi andare a Riferimenti -> Aggiungi riferimento in Esplora soluzioni e aggiungere manualmente un riferimento di assieme.


59
.... e References -> Add Reference
quell'assembly

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

2
Ugh. Perché mai non c'è un errore usingnell'affermazione? Questo sembra avere senso per me.
Yatrix,

7
Immagino che sia perché un'altra DLL sta usando quello spazio dei nomi (altrimenti si otterrebbe un errore)
Gui

4
Grazie! Nessuno dei documenti di esempio di Microsoft menziona questo.
BobRodes


5

Gli attributi [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 e System.Runtime.Serialization per serializzare i gruppi di dati.


5

In Visual Studio per .Net 4.0 framework,

  1. Prova ad aggiungere un nuovo riferimento al progetto.
  2. Nella scheda .Net, Cerca System.Runtime.Serialization.
  3. Ora puoi usare using System.Runtime.Serialization. E l'errore non verrà mostrato.

0

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

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

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


0

Ho risolto questo problema aggiungendo C: \ Programmi (x86) \ Assembly Assembly \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Runtime.Serialization.dll nel riferimento

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.