【问题标题】:Namespace for [DataContract][DataContract] 的命名空间
【发布时间】:2011-11-16 03:19:22
【问题描述】:

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

using System;
using System.Runtime.Serialization;

这是我的代码的 sn-p:

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 右键单击​​您的项目添加/引用。在对话框中找到 System.Runtime.Serialization 并使复选框处于选中状态。然后按“确定”

标签: c# wcf datacontract


【解决方案1】:

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

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

【讨论】:

  • ....默认情况下不引用该程序集,因此您必须在解决方案资源管理器中转到 References -&gt; Add Reference 并添加程序集引用...
  • 就是这样,我的解决方案中没有参考!我认为如果需要参考,它会在using System.Runtime.Serialization; 行上给我一个错误。我想我错了:)
  • 呃。为什么using 语句不会出错?这对我来说似乎很有意义。
  • 我猜这是因为另一个 dll 正在使用该命名空间(否则你会得到一个错误)
  • 谢谢!微软的示例文档都没有提到这一点。
【解决方案2】:

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

DataContractAttribute 位于 System.Runtime.Serialization 命名空间中,您应该引用 System.Runtime.Serialization.dll。它仅适用于 .Net >= 3

【讨论】:

    【解决方案3】:

    在 .Net 4.0 框架的 Visual Studio 中,

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-06-27
            • 1970-01-01
            • 1970-01-01
            • 2012-09-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多