2012-04-12 36 views
6

Tôi có một lỗi null trên đối tượng DTO của tôi trong thời gian chạy:Thông báo lỗi đối tượng Nullable phải có giá trị

enter image description here

Tôi không hiểu vì cột là nullable:

[DataContract] 
public class SearchParametersCompanyDTO 
{ 
    public SearchParametersCompanyDTO(); 

    [DataMember] 
    public CompanyColumnsEnumDTO? Column { get; set; } 
    [DataMember] 
    public int PageIndex { get; set; } 
    [DataMember] 
    public int PageSize { get; set; } 
    [DataMember] 
    public string Term { get; set; } 
} 

[DataContract] 
public enum CompanyColumnsEnumDTO 
{ 
    [EnumMember] 
    CompanyName = 0, 
    [EnumMember] 
    City = 1, 
    [EnumMember] 
    PostCode = 2, 
} 

Nó phải là một vấn đề chuyển đổi bởi vì null được chấp nhận trên Cột:

 var dto = new SearchParametersCompanyDTO 
     { 
      PageIndex = pageIndex, 
      PageSize = defaultPageSize, 
      Term = term, 
      Column = null 
     }; 

Bất kỳ ý tưởng nào?

+1

Tôi biết nhận xét này là không có chủ đề, nhưng ** yêu cầu một câu hỏi rõ ràng, chi tiết, có thể trả lời **. Tôi thấy rất nhiều câu hỏi khủng khiếp ở đây, đây là cách nó nên được thực hiện. – jadarnel27

Trả lời

4

Bạn đang cố gắng truyền một giá trị rỗng vào một loại enum (chứ không phải là loại enum có thể vô hiệu). Tôi đoán bạn thực sự muốn thay đổi dàn diễn viên của bạn để: (? CompanyColumnsEnumDTO)

Column = (CompanyColumnsEnumDTO?) column 
+0

Cảm ơn các bạn. – Bronzato

1

Bạn cần phải cast để thay vì (CompanyColumnsEnumDTO)

3

Vấn đề ở đây là bạn đang đúc giá trị column vào một giá trị không thể null CompanyColumnsEnumDTO. Dựa trên ngoại lệ, có vẻ như columnnull tại đây và truyền tới một giá trị không đúng cách sẽ ném một ngoại lệ. Ý của bạn là chuyển sang CompanyColumnsEnumDTO? thay thế?

+0

+1 Câu hỏi cuối cùng nghe như lỗi biên dịch! :-) – phoog

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