2012-04-12 87 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

相关问题