Không gian tên cho [DataContract]


230

Tôi không thể tìm thấy không gian tên để sử dụng cho [DataContract][DataMember]các phần tử. 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.

using System;
using System.Runtime.Serialization;

Đâ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:

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

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


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

@ 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.R.78.Serialization và tạo hộp kiểm trạng thái. Sau đó nhấn "Ok"
Sim Mak

Câu trả lời:


433

DataContractAttributeLớp nằm trong System.Runtime.Serializationkhông gian tên.

Bạn nên thêm một tài liệu tham khảo System.Runtime.Serialization.dll. Mặc dù vậy, hội đồng đó không được tham chiếu. Để thêm tham chiếu cho dự án của bạn, bạn phải vào Tài liệu tham khảo -> Thêm tham chiếu trong Solution Explorer và thêm tham chiếu lắp ráp theo cách thủ công.


59
.... và lắp ráp đó không được tham chiếu theo mặc định, vì vậy bạn phải truy cập References -> Add Referencevào Solution Explorer và thêm một tham chiếu lắp ráp ...
marc_s

11
Thế là xong, tôi không có tài liệu tham khảo trong giải pháp của mình! Tôi nghĩ rằng nếu cần một tài liệu tham khảo, nó sẽ khiến tôi gặp lỗi trên đường dây using System.Runtime.Serialization;. Tôi đoán là tôi đã sai :)
Otiel

2
Ừ Tại sao trên Trái đất không có lỗi trên usingtuyên bố? Điều đó dường như có ý nghĩa với tôi.
Yatrix

7
Tôi đoán đó là vì một dll khác đang sử dụng không gian tên đó (nếu không bạn sẽ gặp lỗi)
Gui

4
Cảm ơn bạn! Không có tài liệu ví dụ nào của Microsoft đề cập đến điều này.
BobRodes


5

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

System.ServiceModel sử dụng các không gian tên System và System.R nb.Serialization để tuần tự hóa các datamembers.


5

Trong studio trực quan cho khung .Net 4.0,

  1. Cố gắng thêm tài liệu tham khảo mới cho dự án.
  2. Trên tab .Net, 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ị.

0

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

sử dụng System.ServiceModel;
sử dụng System.R.78.Serialization;

Sau đó, vấn đề 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.


0

Tôi đã giải quyết vấn đề này bằng cách thêm C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.R nb.Serialization.dll trong tài liệu tham khảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.