2011-09-13 33 views
203

Tôi không thể tìm thấy không gian tên để sử dụng cho các yếu tố [DataContract][DataMember]. Theo những gì tôi đã tìm thấy, có vẻ như thêm những điều sau đây là đủ, nhưng trong trường hợp của tôi thì không.Không gian tên cho [DataContract]

using System; 
using System.Runtime.Serialization; 

Dưới đây là một đoạn mã của tôi:

using System; 
using System.Runtime.Serialization; 

namespace MyNamespace { 

    [DataContract] 
    public class Tuple<T1, T2> { 
      // A custom implementation of a Tuple 
      //... 
      //... 
     } 
} 

Và lỗi tôi nhận được:

Loại hoặc namespace tên 'DataContract' không thể được tìm thấy (là bạn thiếu sử dụng chỉ thị hoặc tham chiếu lắp ráp?)

Tôi không sử dụng đúng không gian tên ?

+0

Sử dụng VS 2017, lỗi trình biên dịch, không thể tạo, không có thông báo trong danh sách lỗi hoặc bất kỳ chỉ báo nào. Không có màu cú pháp của DataContract, không có gì. – dudeNumber4

+0

@ dudeNumber4 Nhấp chuột phải vào dự án của bạn Thêm/Tham khảo. Trong hộp thoại tìm System.Runtime.Serialization và làm cho checkbox cheked state. Sau đó nhấn "Ok" –

Trả lời

375

DataContractAttribute Lớp học nằm trong không gian tên System.Runtime.Serialization.

Nhưng bạn nên thêm tham chiếu đến System.Runtime.Serialization.dll

Và lắp ráp không được tham chiếu theo mặc định, vì vậy bạn phải đi đến Tài liệu tham khảo -> Add Reference trong Solution Explorer và thêm một tài liệu tham khảo lắp ráp

+56

....và hội đồng đó không được tham chiếu theo mặc định, vì vậy bạn phải đi đến 'Tham khảo -> Thêm tham chiếu' trong Solution Explorer và thêm tham chiếu assembly ... –

+10

Đó là nó, tôi không có tham chiếu trong giải pháp của mình! Tôi nghĩ rằng nếu một tham chiếu là cần thiết, nó sẽ cho tôi một lỗi trên dòng 'using System.Runtime.Serialization;'. Tôi đoán tôi đã sai :) – Otiel

+0

Cảm ơn bạn đời này. – TheGateKeeper

4

[DataContract] và [DataMember] thuộc tính được tìm thấy trong không gian tên System.ServiceModel trong System.ServiceModel.dll.

System.ServiceModel sử dụng các hệ thống và System.Runtime.Serialization các không gian tên để tuần tự hóa các bộ dữ liệu.

0

Trước tiên, tôi thêm tham chiếu vào Mô hình của mình, sau đó tôi sử dụng chúng trong mã của tôi. Có hai tham chiếu bạn nên thêm:

using System.ServiceModel;
bằng System.Runtime.Serialization;

sau đó, sự cố này đã được giải quyết trong chương trình của tôi. Tôi hy vọng câu trả lời này có thể giúp bạn. Cảm ơn.

3

Trong visual studio cho Net 4.0 framework,

  1. Cố gắng thêm tài liệu tham khảo mới để dự án.
  2. Trên .Net Tab, Tìm kiếm System.Runtime.Serialization.
  3. Bây giờ, bạn có thể sử dụng using System.Runtime.Serialization. Và lỗi sẽ không được hiển thị.
Các vấn đề liên quan