Пространство имен для [DataContract]

Я не могу найти пространство имен, которое будет использоваться для элементов [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 или ссылки на сборку?)

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

Ответ 1

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

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

Ответ 3

Атрибуты

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

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

Ответ 4

В visual studio для .NET Framework,

  • Попробуйте добавить новую ссылку на проект.
  • Вкладка .Net, поиск System.Runtime.Serialization.
  • Теперь вы можете использовать using System.Runtime.Serialization. И ошибка не будет показана.

Ответ 5

Во-первых, я добавляю ссылки на мою модель, затем я использую их в своем коде. Вы должны добавить две ссылки:

с помощью System.ServiceModel;
используя System.Runtime.Serialization;

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

Ответ 6

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