2011-02-24 24 views
12

Setter yöntemine sahip bir özelliğe sahip bir taban sınıfım var. Temel sınıftaki ayarlayıcıyı türetilmiş bir sınıftan çağırmanın ve temel anahtar sözcüğünü kullanan geçersiz yöntemlerle yaptığımız gibi bazı işlevler eklemenin bir yolu var mı?C# Temel sınıf özelliği türetilmiş sınıftan çağrılabilir

Üzgünüz, bir örnek eklemeliydim. İşte bir örnek. Ben doğru olsun Umut:

public class A 
{ 
    public abstract void AProperty 
    { 
     set 
     { 
      // doing something here 
     } 
    } 
} 

public class B : A 
{ 
    public override void AProperty 
    { 
     set 
     { 
      // how to invoke the base class setter here 

      // then add some more stuff here 
     } 
    } 
} 
+0

Aslında kendiniz temel almayı denediniz mi? –

+4

Tüm üssünüz size ait. Elbette bunu yapabilirsin. Bir setterin içindeki tabanı kullanabilirsiniz. –

+0

Ne yapmak istediğinize dair bir örnek verebilir misiniz? – Vadim

cevap

21

DÜZENLEME: revize örnek çağırmaları sırasını demostrate gerekir. Konsol uygulaması olarak derleyin.

class baseTest 
{ 
    private string _t = string.Empty; 
    public virtual string t { 
     get{return _t;} 
     set 
     { 
      Console.WriteLine("I'm in base"); 
      _t=value; 
     } 
    } 
} 

class derived : baseTest 
{ 
    public override string t { 
     get { return base.t; } 
     set 
     { 
      Console.WriteLine("I'm in derived"); 
      base.t = value; // this assignment is invoking the base setter 
     } 
    } 
} 

class Program 
{ 

    public static void Main(string[] args) 
    { 
     var tst2 = new derived(); 
     tst2.t ="d"; 
     // OUTPUT: 
     // I'm in derived 
     // I'm in base 
    } 
} 
+0

bir değer atadığınızda gerçekten temel belirleyicinin çağrıldığını göstermek için biraz 'Temel' özelliği olan 't' temelindeki ayarlayıcıyı gerçekten çağırmıyorsunuz. Temel ayarlayıcı 't' 10 satırlık bir kod içeriyorsa, bunu türetilmiş sınıftan çağırabiliriz, böylece bu 10 satır kod çalıştırılır ve daha sonra ek kod satırları eklenir – Shahid

+0

@Shahid evet. Alt sınıf ayarlayıcıdaki kodu \t \t {Console.WriteLine ("Ben temelde") olarak değiştirmeyi deneyin; _t = value;} ve kendiniz görün. –

+0

Teşekkürler paolo. Bunu gözden kaçırmak için aptalım. Cevabınızı şimdi kabul ettim – Shahid

İlgili konular