[DataContract] için ad alanı


230

Kullanılacak ad alanını [DataContract]ve [DataMember]öğeleri bulamıyorum . Bulduğum şeye göre, aşağıdakileri eklemenin yeterli olduğu anlaşılıyor, ancak benim durumumda değil.

using System;
using System.Runtime.Serialization;

İşte benim kod pasajı:

using System;
using System.Runtime.Serialization;

namespace MyNamespace {

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

Ve aldığım hata:

'DataContract' türü veya ad alanı bulunamadı (bir kullanım yönergesi veya bir montaj başvurusu eksik mi?)

Doğru ad alanlarını kullanmıyor muyum?


VS 2017 kullanarak, derleyici hatası oluşturulamaz, hata listesinde mesaj yok veya herhangi bir gösterge yok. DataContract'ın sözdizimi rengi yok, hiçbir şey.
dudeNumber4

@ dudeNumber4 Projenize Ekle / Referansa sağ tıklayın. İletişim kutusunda System.Runtime.Serialization öğesini bulun ve onay kutusunu cheked durumuna getirin. Sonra "Tamam" a basın
Sim Mak

Yanıtlar:


433

DataContractAttributeSınıf System.Runtime.Serializationad alanındadır.

İçin bir referans eklemelisiniz System.Runtime.Serialization.dll. Bu derlemeye varsayılan olarak başvurulmaz. Projenize referans eklemek için, Çözüm Gezgini'nde Referanslar -> Referans Ekle'ye gidip montaj referansını manuel olarak eklemeniz gerekir.


59
.... ve bu derleme varsayılan olarak başvurulmaz, bu nedenle References -> Add ReferenceSolution Explorer'da gitmeli ve bir derleme başvurusu eklemelisiniz ...
marc_s

11
İşte bu, benim çözümümde referans yoktu! Bir referans gerekiyorsa, bu bana bir hata alır düşündüm using System.Runtime.Serialization;. Sanırım yanılmışım :)
Otiel

2
Ugh. Neden yeryüzünde bu hata değil using? Bu bana mantıklı geliyor.
Yatrix

7
Sanırım başka bir dll bu ad alanını kullanıyor çünkü (aksi takdirde bir hata alırsınız)
Gui

4
Teşekkür ederim! Microsoft'un örnek belgelerinden hiçbiri bundan bahsetmez.
BobRodes


5

[DataContract] ve [DataMember] özniteliği, System.ServiceModel.dll dosyasında bulunan System.ServiceModel ad alanında bulunur.

System.ServiceModel, veri üyelerini serileştirmek için System ve System.Runtime.Serialization ad alanlarını kullanır.


5

.Net 4.0 çerçevesi için görsel stüdyoda,

  1. Projeye yeni referans eklemeyi deneyin.
  2. .Net Sekmesinde, Ara System.Runtime.Serialization.
  3. Şimdi kullanabilirsiniz using System.Runtime.Serialization. Ve hata gösterilmeyecek.

0

İlk olarak, Modelime referanslar ekliyorum, sonra bunları kodumda kullanıyorum. Eklemeniz gereken iki referans var:

System.ServiceModel kullanarak;
System.Runtime.Serialization kullanarak;

daha sonra bu sorun programımda çözüldü. Umarım bu cevap size yardımcı olabilir. Teşekkürler.


0

Başvuruda C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Runtime.Serialization.dll dosyasını ekleyerek bu sorunu çözdüm

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.