2010-12-14 95 views
6

J'essaie de comprendre comment appeler un constructeur de classe de base quand j'appelle le constructeur de la classe dérivée.C# Héritage: Comment appeler le constructeur de la classe de base quand j'appelle le constructeur de la classe dérivée

J'ai une classe appelée "AdditionalAttachment" qui est héritée de System.Net.Mail.Attachment.J'ai ajouté 2 propriétés à ma nouvelle classe afin que je puisse avoir toutes les propriétés de la classe Attachment existante avec mes nouvelles propriétés

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

Plus tôt je l'ai utilisé pour créer constructeur comme

// objMs est un objet MemoryStream

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

Je me demande comment puis-je créer le même genre de constructeur de ma classe qui fera la même chose que du constructeur ci-dessus de la classe de base

+0

Dupliquer par environ 2 semaines: http://stackoverflow.com/q/4296888/492 –

Répondre

13

Cela passera vos paramètres dans le constructeur de la classe de base:

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

le ne sont pas, c'était seulement à des fins de démonstration. –

7

Vous pouvez écrire un constructeur qui appelle le constructeur de base de classe:

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

Utilisez cette fonction:

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