2012-02-08 33 views
30

Tôi có một lớp và một thuộc tính là enum. Một cái gì đó như thế này:chúng ta cần thuộc tính Serializable cho enums

//Do i need [Serializable]  
    public enum SexEnum 
    { 
     Male, 
     Female 
    } 

    [Serializable] 
    public class Person 
    { 
     string Name {get;set;} 
     SexEnum Sex {get;set;} 
    } 

Khi tôi serialize Person với BinaryFormatter, tôi cần [Serializable] tại decleration enum? Nó hoạt động tốt mà không có nó nhưng sau đó tại sao nó cho phép các thuộc tính [Serializable] trong enum decumation?

+0

Bạn có muốn tuần tự hóa giá trị không? Nó chỉ là một số nguyên ... –

+1

Tôi muốn tuần tự hóa giá trị và nó được tuần tự hóa cho dù tôi có thuộc tính [Serializable] hay không. Câu hỏi đặt ra là tại sao .NET cho phép serializableattribute cho enums – cellik

Trả lời

23

.NET biết cách tự động tuần tự hóa tất cả các loại được xây dựng đơn giản vì vậy đó là lý do tại sao bạn không cần chỉ định nó.

Tôi nghĩ rằng nếu .NET không cho phép thuộc tính tuần tự hóa đối với các mục có thể tuần tự hóa thì sẽ khó hiểu hơn. Thực tế là bạn có thể quyết định thêm nó hoặc để nó ra là một vấn đề của hương vị.

+0

Vậy điều đó có nghĩa là lớp đó không phải là một kiểu (đơn giản), nhưng enum là? : P Đây cũng là một câu trả lời thực sự tốt cho câu hỏi: http://stackoverflow.com/a/2595199/945456 –

Các vấn đề liên quan