Пространство имен для [DataContract] - PullRequest
226 голосов
/ 13 сентября 2011

Я не могу найти пространство имен для элементов [DataContract] и [DataMember].Согласно тому, что я обнаружил, кажется, что добавления следующего должно быть достаточно, но в моем случае это не так.

using System;
using System.Runtime.Serialization;

Вот фрагмент моего кода:

using System;
using System.Runtime.Serialization;

namespace MyNamespace {

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

И ошибка, которую я получаю:

Не удалось найти имя типа или пространства имен 'DataContract' (отсутствует директива using или ссылка на сборку?)

Я не использую правильные пространства имен?

Ответы [ 6 ]

420 голосов
/ 13 сентября 2011

DataContractAttribute Класс находится в пространстве имен System.Runtime.Serialization.

Вы должны добавить ссылку на System.Runtime.Serialization.dll.На эту сборку по умолчанию нет ссылок.Чтобы добавить ссылку на ваш проект, нужно перейти в «Ссылки» -> «Добавить ссылку» в обозревателе решений и вручную добавить ссылку на сборку.

7 голосов
/ 13 сентября 2011

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

DataContractAttribute находится в пространстве имен System.Runtime.Serialization, и вы должны ссылаться на System.Runtime.Serialization.dll.Он доступен только в .Net> = 3

5 голосов
/ 25 ноября 2015

В visual studio для .Net 4.0 framework,

  1. Попробуйте добавить новую ссылку на проект.
  2. На вкладке .Net, Поиск System.Runtime.Serialization.
  3. Теперь вы можете использовать using System.Runtime.Serialization.И ошибка не будет показана.
5 голосов
/ 13 декабря 2012

Атрибуты [DataContract] и [DataMember] находятся в пространстве имен System.ServiceModel, которое находится в System.ServiceModel.dll.

System.ServiceModel использует пространства имен System и System.Runtime.Serialization для сериализации камер данных.

0 голосов
/ 15 апреля 2019

Я решил эту проблему, добавив C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Runtime.Serialization.dll в ссылку

0 голосов
/ 04 марта 2014

Сначала я добавляю ссылки на мою модель, затем использую их в своем коде.Необходимо добавить две ссылки:

с использованием System.ServiceModel;
с использованием System.Runtime.Serialization;

, тогда эта проблема была решена в моей программе,Я надеюсь, что этот ответ может помочь вам.Спасибо.

...