C sharp - Validación Get y Set

   
Vista:

Validación Get y Set

Publicado por Eduardo (1 intervención) el 30/06/2015 00:05:18
Hola compañeros,

Tengo una duda que espero me puedan ayudar, tengo un programa que recibe un JSON algo grande, el caso es que el compañero no se decide en el tipo de información que me envía, así que en campos donde espero un int y que cuando no tiene una "selección" me manda un 0, de repente deja de enviar 0 y me manda null provocando errores en mis servicios, según el dice que es correcto que por que es la forma en que su sistema funciona y etc etc... lo que me obligo a modificar la forma en que recibo los datos del JSON solo que no se si sea la mejor manera. ¿Me pueden indicar si es correcto lo que realice?

Cabe aclarar que al parecer funciona perfectamente pero no se si haya una manera mas fácil de resolver este problema.

El código de los int quedo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int _aportacionNegocioId;
 
public int? AportacionNegocioId
{
	get
	{
		return _aportacionNegocioId;
	}
	set
	{
		if (value == null)
		{
			value = 0;
		}
		else
		{
			_aportacionNegocioId = Convert.ToInt32(value.ToString());
		}
	}
}

Lo que logro al final es que si me envía este amigo un null o cadenas vacias "" me lo convierta a 0, posteriormente esto lo utilizo ya que solo valido ese 0, la otra historia es que estoy trabajando con PI de SAP y es un show hacer interfaces con ellos de hecho no puedo enviar tags vacíos por que según ellos PI no trabaja así y simplemente no hay que mandar los nodos lo cual me obliga a poner la validación y si no viene con valor simplemente no lo envío en la petición XML... en fin no les cuento mas por que me explayo demasiado. Saludos y gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Validación Get y Set

Publicado por David (59 intervenciones) el 30/06/2015 10:35:44
Es un caso muy específico, pero te aconsejo que el Field sea del mismo tipo que la Property.
Dicho esto, tienes dos posibilidades; tu código casi es correcto, con una salvedad, te falta asignar el valor al Field si el valor que te llega es null. Sería así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private int? _aportacionNegocioId;
 
public int? AportacionNegocioId
{
    get { return _aportacionNegocioId; }
    set
    {
        if (!value.HasValue)
        {
            value = 0;
        }
        else
        {
            value = Convert.ToInt32(value);
        }
        _aportacionNegocioId = value;
    }
}

otra forma:

1
2
3
4
5
6
7
private int? _aportacionNegocioId;
 
public int? AportacionNegocioId
{
    get { return _aportacionNegocioId; }
    set { _aportacionNegocioId = value ?? 0; }
}

O puedes ponerlo en el get:

1
2
3
4
5
6
7
private int? _aportacionNegocioId;
 
public int? AportacionNegocioId
{
    get { return _aportacionNegocioId ?? 0; }
    set { _aportacionNegocioId = value ?? 0; }
}

De esta forma, si el Field no tiene valor devolverá 0, aunque el valor de _aportacionNegocioId sea null.

La elección es tuya
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Validación Get y Set

Publicado por David (59 intervenciones) el 30/06/2015 15:58:13
He revisado mi código y en el primer bloque le sobra el else del set
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar