Zitat: |
Dadurch wird doch das Prinzip der objektorientierten Kapselung zerstört |
Finde ich, trifft's ganz gut
Ich behaupte auch, es gibt fast keinen sinnvollen Anwendungsfall, aber es ist trotzdem dabei, damit man die Möglichkeit hat, falls man sie doch Mal braucht.
Ich persönlich nutze das eigentlich nur in z.B. so einem Fall:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| public class Entry { public object Value { get; }
public Entry(object value) { Value = value; } }
public class Entry<TValue> : Entry { public new TValue Value { get => (TValue)base.Value; }
public Entry(TValue value) : base(value) { } } |
Damit verändere ich das Grundverhalten nicht, ich den selben Wert an, nur mit einem Cast.
Ob das jetzt so gut ist, kann man drüber streiten und im Zweifelsfall ist mir auch das Interface mit explizit implementierter Value-Property lieber.