web-dev-qa-db-fra.com

Espace de noms pour [DataContract]

Je ne trouve pas l'espace de noms à utiliser pour les éléments [DataContract] et [DataMember]. D'après ce que j'ai découvert, il semble que l'ajout de ce qui suit devrait suffire, mais dans mon cas, ce n'est pas le cas.

using System;
using System.Runtime.Serialization;

Voici un extrait de mon code:

using System;
using System.Runtime.Serialization;

namespace MyNamespace {

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

Et l'erreur que je reçois:

Le type ou le nom de l'espace de noms 'DataContract' est introuvable (vous manque une directive using ou une référence Assembly?)

Est-ce que je n'utilise pas les bons espaces de noms?

226
Otiel

DataContractAttribute La classe est dans l'espace de noms System.Runtime.Serialization.

Vous devez ajouter une référence à System.Runtime.Serialization.dll. Cette assemblée n'est cependant pas référencée par défaut. Pour ajouter la référence à votre projet, vous devez accéder à Références -> Ajouter une référence dans l'Explorateur de solutions et ajouter une référence d'assemblage manuellement.

422
CD..

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

DataContractAttribute est dans l'espace de noms System.Runtime.Serialization et vous devez référencer System.Runtime.Serialization.dll. Il est uniquement disponible en .Net> = 3

7
Guillaume

Les attributs [DataContract] et [DataMember] se trouvent dans l'espace de noms System.ServiceModel, qui se trouve dans System.ServiceModel.dll.

System.ServiceModel utilise les espaces de noms System et System.Runtime.Serialization pour sérialiser les membres de données.

5
Jatin Khurana

Dans Visual Studio pour .NET 4.0 Framework,

  1. Essayez d'ajouter une nouvelle référence au projet.
  2. Sur l'onglet Net, recherchez System.Runtime.Serialization.
  3. Maintenant, vous pouvez utiliser using System.Runtime.Serialization. Et l'erreur ne sera pas affichée.
5
Md. Kauser Ahmmed

Tout d'abord, j'ajoute les références à mon modèle, puis je les utilise dans mon code. Il y a deux références que vous devriez ajouter:

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

alors, ce problème a été résolu dans mon programme. J'espère que cette réponse peut vous aider. Merci.

0
user3342169

J'ai résolu ce problème en ajoutant C:\Program Files (x86)\Assemblys de référence\Microsoft\Framework.NETFramework\v4.0\System.Runtime.Serialization.dll dans la référence

0
RotatingWheel