6

我的 DTO 对象在运行时出现空错误:

在此处输入图像描述

我不明白,因为列可以为空:

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

这一定是一个转换问题,因为在 Column 上接受了 null:

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

任何的想法?

4

3 回答 3

6

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

Column = (CompanyColumnsEnumDTO?) column
于 2012-04-12T14:26:24.310 回答
3

这里的问题是您将 valuecolumn转换为 non-nullable value CompanyColumnsEnumDTO。基于它看起来像的异常columnnullhere并且适当地转换为非null会引发异常。你的意思是改为投到CompanyColumnsEnumDTO?吗?

于 2012-04-12T14:26:52.593 回答
1

您需要转换为 (CompanyColumnsEnumDTO?) 而不是 (CompanyColumnsEnumDTO)

于 2012-04-12T14:26:45.787 回答