Abbiamo un grande progetto che esegue molti modelli e calcoli. Questo codice viene suddiviso in blocchi più piccoli e più gestibili, spostando particolari calcoli nelle proprie classi.
Per provare a mantenere gli input e gli output vincolati al metodo di calcolo appropriato, sono state utilizzate due classi di proprietà nidificate pubbliche (se le classi di proprietà sono il termine corretto per una classe che ha solo proprietà).
Quello che segue è un esempio di come viene affrontato:
public class SomeCalculation
{
public Result Calculate(Parameters p)
{
double foundValue = 0;
switch (p.ParamD)
{
case SomeEnum.Element1:
foundValue = p.ParamA + p.ParamB + p.ParamC;
break;
case SomeEnum.Element1:
foundValue = p.ParamA + p.ParamB - p.ParamC;
p.ParamC = 5;
break;
default:
p.ParamB = -2;
break;
}
return new Result()
{
FoundValue = foundValue,
NewParamB = p.ParamB,
NewParamC = p.ParamC
};
}
public class Parameters
{
public double ParamA { get; set; }
public double ParamB { get; set; }
public int ParamC { get; set; }
public SomeEnum ParamD { get; set; }
}
public class Result
{
public double FoundValue { get; set; }
public double NewParamB { get; set; }
public int NewParamC { get; set; }
}
}
Questo calcolo sarebbe quindi eseguito istanziando e passando nella classe% co_de nidificata. I principali vantaggi di questo sono che le classi Parameters
e Parameters
vengono mantenute con la classe Result
, e gli stessi nomi di classi annidate possono essere riutilizzati con altre classi calcolo .
Mi chiedo se il modello di design sopra riportato sia un approccio ragionevole, anche se la pagina Tipi nidificati di MSDN dice di evitare di esporre pubblicamente i tipi annidati. Inoltre, è conforme alle pratiche standard (come i principi SOLID) o avrà qualche limite che potrebbe causare problemi?