Mi chiedo quale sia la prassi migliore per detenere dati immutabili , più specificamente in C # .
Ad esempio, diciamo che ho un oggetto immutabile chiamato Foo
.
public sealed class Foo {
public int Bar { get; }
public Foo(int bar) {
Bar = bar;
}
}
Attualmente, ho conservato questi oggetti in un static class
in questo modo.
public static class FooList {
private static List<Foo> fooList;
static Foo {
fooList = new List<Foo>();
fooList.Add(new Foo(1));
fooList.Add(new Foo(2));
}
public static Foo GetFoo(int index) {
if (index >= 0 && index < fooList.Count) {
return fooList[index];
}
// I don't know if this is right, but besides the point
throw;
}
}
Da lì, qualsiasi classe può avere il proprio riferimento a un oggetto Foo chiamando GetFoo(int)
. Tuttavia, ho letto recentemente che static classes
dovrebbe essere evitato a causa della loro difficile manutenzione (non conosco la ragione specifica, ma suppongo che sia perché non possono essere istanziati).
Se questo è il caso, quale sarebbe la migliore pratica per contenere dati immutabili in questa situazione? Sono a conoscenza del Singleton Pattern
, ma non so se questa è la migliore pratica per questa situazione.