2012-04-12 10 views
6

Tengo un error nulo en mi objeto DTO en tiempo de ejecución:mensaje de error anulable objeto debe tener un valor

enter image description here

No entendía porque la columna es anulable:

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

Se debe ser un problema de conversión porque se acepta nulo en la columna:

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

¿Alguna idea?

+1

Sé que este comentario no está relacionado con el tema, pero ** felicitaciones por hacer una pregunta clara, detallada y respondible **. Veo tantas preguntas terribles aquí, así es como debería hacerse. – jadarnel27

Respuesta

4

Está intentando emitir un valor nulo a un tipo de enumeración (en lugar de un tipo de enumeración que admite nulos). Supongo que realmente quiere cambiar su elenco a: (? CompanyColumnsEnumDTO)

Column = (CompanyColumnsEnumDTO?) column 
+0

Gracias chicos. – Bronzato

1

Es necesario para echar a en lugar de (CompanyColumnsEnumDTO)

3

El problema aquí es que estas lanzando el valor en column un valor que no admite nulos CompanyColumnsEnumDTO. Basado en la excepción, parece que column es null aquí y el lanzamiento a un no nulo arroja una excepción. ¿Querías lanzar al CompanyColumnsEnumDTO??

+0

+1 ¡Esa última pregunta suena como un error del compilador! :-) – phoog

Cuestiones relacionadas