Я уже искал эту проблему как на SO, так и на других сайтах, но мне не удалось найти (или найти) решение для моего дела.
У меня есть абстрактный класс с именем EnteBase
, который я использую в качестве основы ( Дух! ) для двух других классов, Regione
и Provincia
.
EnteBase
:
public abstract class EnteBase
{
public EnteBase ()
: this( "Sconosciuto", 0 )
{
}
public EnteBase ( string nome )
: this( nome, 0 )
{
}
public EnteBase ( string nome, int numeroComuni )
{
this.Nome = nome;
this.NumeroComuni = numeroComuni;
}
private string nome;
public string Nome
{
[...]
}
private int numeroComuni;
public int NumeroComuni
{
[...]
}
}
Regione
public class Regione : EnteBase
{
public List<Provincia> Province
{
[...]
}
public Regione ()
: base()
{
this.Province = new List<Provincia>();
}
public Regione ( string nome )
: this()
{
}
public Regione ( string nome, int numeroComuni )
: this()
{
}
public void AggiungiProvincia ( Provincia provincia )
{
Province.Add( provincia );
}
}
Provincia
public class Provincia : EnteBase
{
private string sigla;
public string Sigla
{
[...]
}
public Provincia ()
: base()
{
}
public Provincia ( string nome )
: this()
{
this.Nome = nome;
}
public Provincia ( string nome, int numeroComuni )
: this()
{
this.Nome = nome;
this.NumeroComuni = numeroComuni;
}
public Provincia( string nome, int numeroComuni, string sigla)
: this()
{
this.Nome = nome;
this.NumeroComuni = numeroComuni;
this.Sigla = sigla;
}
}
Мои вопросы следующие:
- Правильно ли использовать
:this()
во всех конструкторах базового класса, кроме одного с большинством параметров, а остальные указывают на последний?
- Правильно ли использовать
:this()
, указывающее на базовый конструктор в классах Provincia
и Regione
, а затем назначать поля изнутри самого метода?
Моя проблема коренится в том, что я хотел использовать как :this()
, так и :base()
в каждом методе. Когда я обнаружил, что это невозможно, я искал решение, но не смог найти способ применить то, что видел в этом вопросе и этом .
P.S .: в конструкторах, предпочтительно использовать this.FieldName
или просто FieldName
?