Namespace für [DataContract]

230

Ich kann den zu verwendenden Namespace [DataContract]und die [DataMember]Elemente nicht finden . Nach dem, was ich gefunden habe, scheint es ausreichend zu sein, Folgendes hinzuzufügen, aber in meinem Fall ist dies nicht der Fall.

using System;
using System.Runtime.Serialization;

Hier ist ein Ausschnitt aus meinem Code:

using System;
using System.Runtime.Serialization;

namespace MyNamespace {

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

Und der Fehler, den ich bekomme:

Der Typ- oder Namespace-Name 'DataContract' wurde nicht gefunden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)

Benutze ich nicht die richtigen Namespaces?

Otiel
quelle
Bei Verwendung von VS 2017 kann der Compilerfehler nicht erstellt werden, es wird keine Meldung in der Fehlerliste angezeigt oder es wird überhaupt ein Hinweis angezeigt. Keine Syntaxfärbung von DataContract, nichts.
dudeNumber4
@ dudeNumber4 Klicken Sie mit der rechten Maustaste auf Ihr Projekt. Suchen Sie im Dialogfeld nach System.Runtime.Serialization und aktivieren Sie das Kontrollkästchen. Dann
Sim Mak

Antworten:

433

DataContractAttributeKlasse ist im System.Runtime.SerializationNamespace.

Sie sollten einen Verweis auf hinzufügen System.Runtime.Serialization.dll. Diese Assembly wird jedoch standardmäßig nicht referenziert. Um die Referenz zu Ihrem Projekt hinzuzufügen, müssen Sie im Projektmappen-Explorer zu Referenzen -> Referenz hinzufügen gehen und manuell eine Baugruppenreferenz hinzufügen.

CD..
quelle
59
.... und diese Assembly wird standardmäßig nicht referenziert, daher müssen Sie References -> Add Referenceim
Projektmappen-
11
Das war's, ich hatte die Referenz nicht in meiner Lösung! Ich dachte, wenn eine Referenz benötigt würde, würde ich einen Fehler in der Leitung bekommen using System.Runtime.Serialization;. Ich glaube ich habe mich geirrt :)
Otiel
2
Pfui. Warum um alles in der Welt macht es keinen Fehler in der usingAussage? Das scheint mir sinnvoll zu sein.
Yatrix
7
Ich denke, das liegt daran, dass eine andere DLL diesen Namespace verwendet (sonst würde ein Fehler auftreten)
Gui
4
Danke dir! Keines der Beispieldokumente von Microsoft erwähnt dies.
BobRodes
5

Die Attribute [DataContract] und [DataMember] befinden sich im System.ServiceModel-Namespace in System.ServiceModel.dll.

System.ServiceModel verwendet die Namespaces System und System.Runtime.Serialization, um die Datenmitglieder zu serialisieren.

Jatin Khurana
quelle
5

In Visual Studio für .Net 4.0 Framework,

  1. Versuchen Sie, dem Projekt einen neuen Verweis hinzuzufügen.
  2. Suchen Sie auf der Registerkarte .NET nach System.Runtime.Serialization.
  3. Jetzt können Sie verwenden using System.Runtime.Serialization. Und der Fehler wird nicht angezeigt.
Md Kauser Ahmmed
quelle
0

Zuerst füge ich die Verweise zu meinem Modell hinzu und verwende sie dann in meinem Code. Es gibt zwei Referenzen, die Sie hinzufügen sollten:

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

dann wurde dieses Problem in meinem Programm gelöst. Ich hoffe diese Antwort kann Ihnen helfen. Vielen Dank.

user3342169
quelle
0

Ich habe dieses Problem gelöst, indem ich C: \ Programme (x86) \ Referenzassemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Runtime.Serialization.dll in die Referenz eingefügt habe

Drehrad
quelle