Teorik bir soruya rastladım.Bir Çocuk Sınıfında Bir Sanal Oto Mülkün Kısmen Geçersiz Kılınması
Aşağıdaki kod geçerlidir ve derler:
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; }
}
Sorum şu:
Neden C# bunu kısmen öngörülemeyen davranışları yol açtığında beni kısmen bir çocukta TestProperty
oto özelliğini geçersiz kılmak için izin vermez ? Pratik bir uygulama var mı?
Ben ebeveynin ayarlayıcı (I IL oluşturuluyor kontrol ve ayarlayıcı hala üst sınıfta arka nesnesi kuruyor) değeri halka erişilebilir olmadığı halde kullanarak TestProperty değerini ayarlamak için izin var.
İlginç bir soru! –
Eminim ki, derlenecek ve işleyecek, ancak pratik bir uygulamaya ve potansiyel çirkin yan etkilere sahip olmayan çok tuhaf şeyler vardır. Çekiçler, onları nasıl kullandığınıza bağlı olarak evler inşa eder veya şut çeker :) –
@Dave - Çok doğru. Sadece, bu durumda, baş parmaklarımın bir çekiçle kırılmasının, görmediğim bir amaca hizmet etmediğinden emin olmak istiyorum. –