Tengo una clase con dos constructores (C#). Aquí está el fragmento de código:Llamar a un constructor de otro constructor en la misma clase
public class FooBar()
{
public FooBar(string s)
{
// constructor 1, some functionality
}
public FooBar(int i) : this("My String")
{
// constructor 2, some other functionality
}
}
Sí, sé que puedo llamar a un constructor desde otro utilizando el enfoque mencionado anteriormente. Pero en este escenario, si llamo al constructor 2, todas las declaraciones en el constructor 1 se ejecutarán ANTES de que se ejecute la misma instrucción en el constructor 2.
Lo que yo quiero es que después de todas las declaraciones en el constructor 2 se ejecutan, entonces será llamada al constructor 1.
En mi situación exacta, estoy haciendo la autenticación de usuarios. Constructor 1 recupera la información del usuario solo con la identificación del usuario, pero el constructor 2 realiza la autenticación del usuario mediante correo electrónico y contraseña. Si un usuario está en la base de datos, obtiene la identificación del usuario y ahora quiero que el constructor 1 complete todas las propiedades de la clase.
Háganme saber si necesita información adicional. Si crees que hay otro enfoque mejor, me complacerá escuchar la sugerencia.
ACTUALIZACIÓN 1: me pregunto por qué algo como esto no está implementado:
public FooBar(bool b)
{
// constructor 3, some more functionality
this.FooBar("My String"); // calling constructor 1
}
scenerio interesante. Podrías mover la funcionalidad en una función separada, o crear un Constructor sobrecargado 'FooBar (string s, int i)'. Puede que no sea la mejor solución, pero solo arrojando algunas ideas. – Justin
@Justin, poner lógica en otro método parece ser una mejor idea. Gracias. – Farhan