2010-12-14 16 views
6

Estoy tratando de averiguar cómo invocar un constructor de la clase base cuando llamo al constructor de la clase derivada.C# Herencia: Cómo invocar el constructor de la clase base cuando llamo al constructor de la clase derivada

Tengo una clase llamada "AdditionalAttachment" que se hereda de System.Net.Mail.Attachment. He agregado 2 propiedades más a mi nueva clase para que pueda tener todas las propiedades de la clase Attachment existente con mis nuevas propiedades

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

Anteriormente he usado para crear el constructor como

// objMs es un objeto MemoryStream

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

me pregunto ¿Cómo puedo crear el mismo tipo de constructor para mi clase que hará lo mismo que la del constructor por encima de la clase base

+0

Duplicado por aproximadamente 2 semanas: http://stackoverflow.com/q/4296888/492 –

Respuesta

13

Esto pasará sus parámetros en el constructor de la clase 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

no lo son, solo para fines de demostración. –

7

puede escribir un constructor que llama al constructor de la clase de base:

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

Utilice esta función:

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