2010-12-14 16 views
6

Próbuję dowiedzieć się, jak wywołać konstruktora klasy podstawowej, gdy wywołanie konstruktora klasy pochodnej.Dziedziczenie C#: Jak wywołać konstruktora klasy podstawowej, gdy wywołuję konstruktor klasy pochodnej

Mam klasę o nazwie "AdditionalAttachment", która jest dziedziczona z System.Net.Mail.Attachment. Dodałem 2 nowe właściwości do mojej nowej klasy, dzięki czemu mogę mieć wszystkie właściwości istniejącej klasy Attachment z moimi nowymi właściwościami

public class AdditionalAttachment: Attachment 
{ 
    [DataMember] 
    public string AttachmentURL 
    { 
     set; 
     get; 
    } 
    [DataMember] 
    public string DisplayName 
    { 
     set; 
     get; 
    } 
} 

Wcześniej wykorzystywane do tworzenia konstruktora jak

// objMs jest obiekt MemoryStream

Attachment objAttachment = new Attachment(objMs, "somename.pdf") 

Zastanawiam Jak mogę utworzyć ten sam rodzaj konstruktora do mojej klasy, która zrobi to samo, co wyżej konstruktora klasy bazowej

+0

Powielanie przez około 2 tygodnie: http://stackoverflow.com/q/4296888/492 –

Odpowiedz

13

Przepuszcza swoje parametry do konstruktora klasy bazowej:

public AdditionalAttachment(MemoryStream objMs, string displayName) : base(objMs, displayName) 
{ 
    // and you can do anything you want additionally 
    // here (the base class's constructor will have 
    // already done its work by the time you get here) 
} 
3
public class AdditionalAttachment: Attachment 
{ 
    public AdditionalAttachment(param1, param2) : base(param1, param2){} 
    [DataMember] 
    public string AttachmentURL 
    { 
     set; 
     get; 
    } 
    [DataMember] 
    public string DisplayName 
    { 
     set; 
     get; 
    } 
} 
+0

nie są, było tylko dla celów demonstracyjnych. –

7

można napisać konstruktora, który wywołuje konstruktor klasy bazowej:

public AdditionalAttachment(MemoryStream objMs, string filename) 
    : base(objMs, filename) 
{ 
} 
7

korzystania z funkcji:

public AdditionalAttachment(MemoryStream ms, string name, etc...) 
     : base(ms, name) 
{ 
} 
Powiązane problemy