it-swarm.it

Spazio dei nomi per [DataContract]

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

using System;
using System.Runtime.Serialization;

Ecco uno snippet 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:

Non è stato possibile trovare il nome di spazio dei nomi "DataContract" (manca una direttiva using o un riferimento Assembly?)

Non sto usando i namespace giusti?

224
Otiel

DataContractAttribute La classe si trova nello spazio dei nomi System.Runtime.Serialization.

Dovresti aggiungere un riferimento a System.Runtime.Serialization.dll. Quella Assemblea non è referenziata di default però. Per aggiungere il riferimento al tuo progetto devi andare su Riferimenti -> Aggiungi riferimento in Esplora soluzioni e aggiungere manualmente un riferimento all'Assembly.

418
CD..

http://msdn.Microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx

DataContractAttribute si trova nello spazio dei nomi System.Runtime.Serialization e si dovrebbe fare riferimento a System.Runtime.Serialization.dll. È disponibile solo in .Net> = 3

7
Guillaume

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 datamembers.

5
Jatin Khurana

In Visual Studio per .Net 4.0 framework,

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

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

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

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

0
user3342169

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

0
RotatingWheel