【问题标题】:Error message Nullable object must have a value错误消息 Nullable 对象必须有一个值
【发布时间】:2012-04-12 14:24:28
【问题描述】:

我的 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
        };

有什么想法吗?

【问题讨论】:

  • 我知道这条评论离题了,但很高兴提出一个清晰、详细、可回答的问题。我在这里看到这么多可怕的问题,这就是应该做的。

标签: c# asp.net


【解决方案1】:

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

Column = (CompanyColumnsEnumDTO?) column

【讨论】:

    【解决方案2】:

    这里的问题是您将值column 转换为不可为空的值CompanyColumnsEnumDTO。根据异常,这里看起来 columnnull 并且适当地转换为非 null 会引发异常。您的意思是改为投射到 CompanyColumnsEnumDTO? 吗?

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-12
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        • 2012-02-03
        相关资源
        最近更新 更多