2010-12-14 12 views
6
aufrufen

Ich versuche herauszufinden, wie ein Basisklassenkonstruktor aufrufen, wenn ich den abgeleiteten Klassenkonstruktor aufrufen.C# Vererbung: Wie der Basisklassenkonstruktor aufgerufen wird, wenn ich den abgeleiteten Klassenkonstruktor

Ich habe eine Klasse namens "AdditionalAttachment", die von System.Net.Mail.Attachment geerbt wird. Ich habe meiner neuen Klasse 2 weitere Eigenschaften hinzugefügt, so dass ich alle Eigenschaften der bestehenden Attachment-Klasse mit meinen neuen Eigenschaften haben kann

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

Früher i verwendet Konstruktor zu erstellen, wie

// objMs ist ein Objekt Memory

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

ich frage mich, wie kann ich die gleiche Art von Konstruktor meine Klasse erstellen, die das gleiche wie der oben Konstruktor der Basisklasse

+0

Duplizieren um ca. 2 Wochen: http://Stackoverflow.com/q/4296888/492 –

Antwort

13

Dies wird Ihre Parameter in die Basisklasse Konstruktor tun:

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

die sind nicht, es war nur zu Demonstrationszwecken. –

7

können Sie einen Konstruktor schreiben, die die Klasse Basiskonstruktor ruft:

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

Mit dieser Funktion:

public AdditionalAttachment(MemoryStream ms, string name, etc...) 
     : base(ms, name) 
{ 
} 
Verwandte Themen