Visual CSharp .NET - Validación de datos en constructor?

   
Vista:
Imágen de perfil de Walter

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?
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;
            }
        }
O cómo se haría si así no se puede? Gracias de antemano.
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