Ich habe eine Klasse mit zwei readonly int
Feldern. Sie sind als Eigenschaften ausgesetzt:
public class Thing
{
private readonly int _foo, _bar;
/// <summary> I AM IMMUTABLE. </summary>
public Thing(int foo, int bar)
{
_foo = foo;
_bar = bar;
}
public int Foo { get { return _foo; } set { } }
public int Bar { get { return _bar; } set { } }
}
Dies bedeutet jedoch, dass das Folgende vollkommen legal ist:
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
Die Fehler, die von der Annahme ausgehen, dass dies funktionieren würde, werden mit Sicherheit heimtückisch sein. Sicher, der falsche Entwickler sollte die Dokumentation gelesen haben. Das ändert aber nichts an der Tatsache, dass ihn kein Kompilierungs- oder Laufzeitfehler vor dem Problem gewarnt hat.
Wie sollte die Thing
Klasse geändert werden, damit Entwickler mit geringerer Wahrscheinlichkeit den oben genannten Fehler machen?
Eine Ausnahme auslösen? Verwenden Sie eine Get-Methode anstelle einer Eigenschaft?
Interfaces
. Ich bin nicht sicher, ob ich das tue.