
Validación de datos en constructor?
Publicado por Walter (1 intervención) el 08/12/2015 17:39:06
Buenas tardes, les hago una consulta, estoy practicando con C#.NET y me pide crear una clase Persona con un atributo "Telefono" al cual debo controlarle que no se le carguen màs de 9 digitos.
Se me ocurrió hacerlo String (otro día veré el tema de que sólo se le carguen números, si lo cambio a int, etc, ahora no me interesa tanto) para validarlo con el Length, hasta ahí en el Setter todo bien, pero al momento de crear el objeto con el constructor, cómo puedo validarlo? Puedo poner cláusulas IF en el constructor parametrizado? Está bien visto eso?
Y suponiendo que se pueda hacer, quedaría así el constructor:
O cómo se haría si así no se puede? Gracias de antemano.
Se me ocurrió hacerlo String (otro día veré el tema de que sólo se le carguen números, si lo cambio a int, etc, ahora no me interesa tanto) para validarlo con el Length, hasta ahí en el Setter todo bien, pero al momento de crear el objeto con el constructor, cómo puedo validarlo? Puedo poner cláusulas IF en el constructor parametrizado? Está bien visto eso?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
class Persona
{
#region Constructores
public Persona()
{
}
public Persona(string paramNombre, string paramApellido, string paramTelefono)
{
this._Apellido = paramApellido;
this._Nombre = paramNombre;
this._Telefono = this.Telefono;
}
#endregion Constructores
#region Variables
private String _Nombre;
private String _Apellido;
private String _Telefono;
#endregion Variables
#region Atributos
public String Nombre
{
get { return this._Nombre; }
set { _Nombre = value.Trim(); }
}
public String Apellido
{
get { return this._Apellido; }
set { _Apellido = value.Trim(); }
}
public String Telefono
{
get { return this._Telefono; }
set
{
if (value.Trim().Length == 0 | value.Trim().Length > 9)
{
Console.WriteLine("El valor ingresado es inválido, debe tener entre 0 y 9 caracteres.");
}
_Telefono = value.Trim();
}
}
#endregion Atributos
public override string ToString()
{
return this._Apellido + ", " + this._Nombre + "; " + this._Telefono;
}
}
}
Y suponiendo que se pueda hacer, quedaría así el constructor:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Persona(string paramNombre, string paramApellido, string paramTelefono)
{
this._Apellido = paramApellido;
this._Nombre = paramNombre;
//this._Telefono = this.Telefono; esta línea esta comentada porque así lo hice al principio,
// pero no sirve para verificar la longitud del teléfono
if (paramTelefono.Trim().Length == 0 | paramTelefono.Trim().Length > 9)
{
Console.WriteLine("El valor ingresado es inválido, debe tener entre 0 y 9 caracteres.");
}
else
{
this._Telefono = paramTelefono;
}
}
Valora esta pregunta


0