2012-04-12 82 views
6

我在運行時有我的DTO對象上的零誤差:錯誤消息可空對象必須有一個值

enter image description here

我不理解,因爲列可以爲空:

[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, 
} 

它必須是轉換問題,因爲null在列上被接受:

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

有什麼想法?

+1

我知道這個評論是脫離主題,但**要求清晰,詳細,可回答的問題**。我在這裏看到很多可怕的問題,這是應該如何做的。 – jadarnel27 2012-04-12 14:28:30

回答

4

您試圖將null值轉換爲枚舉類型(而不是可空的枚舉類型)。我猜你真的想改變你投地:(?CompanyColumnsEnumDTO)

Column = (CompanyColumnsEnumDTO?) column 
+0

謝謝你們。 – Bronzato 2012-04-12 14:45:39

1

你需要轉換爲替代(CompanyColumnsEnumDTO)

3

這裏的問題是你鑄造價值column成非空值CompanyColumnsEnumDTO。基於它看起來像column的例外是null這裏,並且轉換爲非null會適當地引發異常。你的意思是投到CompanyColumnsEnumDTO?而不是?

+0

+1最後一個問題聽起來像是編譯器錯誤! :-) – phoog 2012-04-12 15:02:14

相關問題