2011-09-13 103 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。錯誤將不會顯示。
相關問題