2011-09-13 79 views
203

我找不到要用于[DataContract][DataMember]元素的名称空间。根据我所发现的,似乎添加以下内容应该足够了,但在我的情况下不是这样。[DataContract]的名称空间

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”找不到(是否缺少使用指令或装配参考?)

我没有使用正确的命名空间?

+0

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

+0

@ dudeNumber4右键单击您的项目添加/参考。在对话框中找到System.Runtime.Serialization并使复选框处于非活动状态。然后按“确定” –

回答

375

DataContractAttribute该类位于System.Runtime.Serialization命名空间中。

但是,你应该到System.Runtime.Serialization.dll

和装配添加引用默认情况下不被引用,所以你必须去引用 - >添加引用在解决方案资源管理器,并添加程序集引用

+56

....并且该程序集并未默认引用,因此您必须在解决方案资源管理器中转到“引用 - >添加引用”并添加程序集引用... –

+10

就是这样,我没有参考我的解决方案!我认为如果需要一个引用,它会在'使用System.Runtime.Serialization;'这一行上给我一个错误。我想我错了:) – Otiel

+0

谢谢你这个伴侣。 – TheGateKeeper

4

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

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

0

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

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

然后,这个问题在我的程序中解决了。我希望这个答案可以帮助你。谢谢。

3

在为.NET 4.0框架的Visual Studio,

  1. 尝试添加新的参考项目。
  2. On .Net标签,搜索System.Runtime.Serialization
  3. 现在,您可以使用using System.Runtime.Serialization。错误将不会显示。
相关问题