错误信息:可空对象必须具有值。

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
我知道这个评论与主题无关,但是为你提出一个清晰、详细、可回答的问题而喝彩。在这里我看到了很多糟糕的问题,而你的提问方式就是应该的。 - Josh Darnell
3个回答

6

您正在尝试将一个空值转换为枚举类型(而不是可空枚举类型)。我猜您实际上想要更改您的转换为:

Column = (CompanyColumnsEnumDTO?) column

3
这里的问题在于将值 column 强制转换为非空值 CompanyColumnsEnumDTO。根据异常信息,column 在这里似乎是 null,强制转换为非空值会适当地抛出异常。您是否想要转换为 CompanyColumnsEnumDTO

1

你需要将其转换为 (CompanyColumnsEnumDTO?) 而不是 (CompanyColumnsEnumDTO)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接