Ho bisogno di creare un oggetto immutabile ma richiede diversi parametri per lavorare come:
class FooRepo
{
public string ConnectionStringName { get; }
public string SchemaName { get; }
public string TableName { get; }
public Dictionary<string, int> ColumnLengths { get; }
public Dictionary<Type, SqlDbType> TypeMappings { get; }
// some queries...
public IEnumerable<string> GetStrings(object param1) { ... }
}
Trovo che ci siano troppi parametri per passarli tutti tramite il costruttore (potrei aggiungere più tardi).
Anche l'idea di bloccare l'oggetto dopo che è stata impostata non sembra buona.
Ho pensato di creare un FooBuilder
, ma questo nasconderebbe solo un costruttore enorme .
L'unica soluzione ragionevole che riesco a pensare è quella di definire i valori predefiniti per alcune proprietà come ColumnLengths
e TypeMappings
e consentire all'utente di sovrascriverli / personalizzarli derivando dalla classe originale.
Che cosa diresti? O forse ci sono modi migliori per un simile compito?