Tempo per una domanda teorica che ho appena incontrato.Sovraccarico parziale di una proprietà automatica virtuale in una classe figlio
Il seguente codice è valido e compila:
public class Parent
{
public virtual object TestProperty { get; set; }
}
public class Child : Parent
{
private string _testValue = "Hello World!";
public override object TestProperty
{
get { return _testValue; }
}
}
public class Consumer
{
Parent p = new Child();
public Consumer(){ p.TestProperty = 3; }
}
La mia domanda è:
Perché C# mi permette di ignorare in parte la proprietà TestProperty
auto in un bambino quando si porta ad un comportamento parzialmente imprevedibile ? Esiste un'applicazione pratica?
Sono autorizzato a impostare il valore di TestProperty utilizzando il setter del genitore (ho controllato che l'IL sia stato generato e il setter sta ancora impostando l'oggetto di supporto nella classe genitore) anche se il valore non è accessibile al pubblico.
Interessante domanda! –
Sono sicuro che ci sono molte cose strane come questa che verranno compilate e funzionanti, ma non hanno alcuna applicazione pratica e potenziali effetti collaterali brutti. I martelli costruiscono case o fanno schifo a seconda di come li usi :) –
@Dave - Molto vero. Voglio solo assicurarmi che, in questo caso, spaccandomi i pollici con un martello non abbia uno scopo che non vedo. –