Si quiero un constructor al que solo se puede acceder desde clases secundarias, puedo usar la palabra clave protected
en el constructor.¿Cómo puedo hacer que un constructor solo sea accesible por clase base?
Ahora quiero lo contrario.
Mi clase niño debe tener un constructor que se puede acceder mediante su clase base, pero no de cualquier otra clase.
¿Esto es posible?
Este es mi código actual. el problema es que las clases secundarias tienen un constructor público.
public abstract class BaseClass
{
public static BaseClass CreateInstance(DataTable dataTable)
{
return new Child1(dataTable);
}
public static BaseClass CreateInstance(DataSet dataSet)
{
return new Child2(dataSet);
}
}
public class Child1 : BaseClass
{
public Child1(DataTable dataTable)
{
}
}
public class Child2 : BaseClass
{
public Child2(DataSet dataSet)
{
}
}
No estoy seguro de que esto sea posible, una clase base que conozca clases de niños va en contra de mi comprensión de la herencia –
@DanF Tienes razón, pero una clase 'BaseClassFactory' que sabe acerca de' Child1' y ' Child2' sería normal y tendría el mismo problema. – hvd