[DataContract]的命名空间


230

我找不到要用于[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指令或程序集引用?)

我使用的命名空间不正确吗?


使用VS 2017,编译器错误,无法生成,错误列表中没有消息或根本没有任何指示。DataContract没有语法着色,什么也没有。
dudeNumber4

@ dudeNumber4右键单击您的项目“添加/引用”。在对话框中找到System.Runtime.Serialization并使复选框处于选中状态。然后按“确定”
Sim Mak,

Answers:


433

DataContractAttribute类在System.Runtime.Serialization名称空间中。

您应该添加对的引用System.Runtime.Serialization.dll。但是,默认情况下未引用该程序集。要将引用添加到项目中,您必须转到解决方案资源管理器中的“引用”->“添加引用”,然后手动添加程序集引用。


59
...。并且默认情况下未引用该程序集,因此您必须References -> Add Reference在解决方案资源管理器中转到并添加程序集引用...
marc_s

11
就是这样,我的解决方案中没有参考!我以为如果需要参考,那会给我一个错误using System.Runtime.Serialization;。我猜我错了:)
Otiel

2
啊。为什么地球上的using陈述没有错误?这对我来说似乎很有意义。
Yatrix

7
我猜那是因为另一个dll正在使用该命名空间(否则您会得到一个错误)
Gui

4
谢谢!微软的示例文档都没有提到这一点。
BobRodes


5

[DataContract]和[DataMember]属性位于System.ServiceModel.dll的System.ServiceModel命名空间中。

System.ServiceModel使用System和System.Runtime.Serialization命名空间来序列化数据成员。


5

在.NET 4.0框架的Visual Studio中,

  1. 尝试向项目添加新的引用。
  2. 在.Net选项卡上,搜索System.Runtime.Serialization
  3. 现在,您可以使用using System.Runtime.Serialization。并且错误不会显示。

0

首先,将引用添加到模型中,然后在代码中使用它们。您应该添加两个参考:

使用System.ServiceModel;
使用System.Runtime.Serialization;

然后,这个问题在我的程序中解决了。希望这个答案能对您有所帮助。谢谢。


0

我通过在参考中添加C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Runtime.Serialization.dll解决了此问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.