2010-12-14 2 views
6

Tôi đang cố gắng tìm ra cách gọi một hàm tạo lớp cơ sở khi tôi gọi hàm tạo lớp dẫn xuất.C# Thừa kế: Làm thế nào để gọi hàm tạo lớp cơ sở khi tôi gọi hàm tạo lớp dẫn xuất

Tôi có một lớp được gọi là "AdditionalAttachment" được thừa hưởng từ System.Net.Mail.Attachment.I đã thêm 2 thuộc tính vào lớp mới của tôi để tôi có thể có tất cả các thuộc tính của lớp Đính kèm hiện có với thuộc tính mới của tôi

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

Đầu tôi được sử dụng để tạo ra constructor như

// objMs là một đối tượng MemoryStream

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

tôi tự hỏi làm thế nào tôi có thể tạo ra cùng một loại constructor cho lớp của tôi sẽ làm điều tương tự như của các nhà xây dựng trên của lớp cơ sở

+0

Nhân đôi khoảng 2 tuần: http://stackoverflow.com/q/4296888/492 –

Trả lời

13

này sẽ vượt qua các thông số của bạn vào constructor lớp cơ sở của:

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

không, nó chỉ dành cho mục đích trình diễn. –

7

Bạn có thể viết một constructor mà các cuộc gọi constructor lớp cơ sở:

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

Sử dụng chức năng này:

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