2012-04-13 7 views
7

Tôi có lớp cơ sở trừu tượng sau đây trong đó tôi có một phương thức trừu tượng. Tôi cần biết cách triển khai phương thức trừu tượng này trong các lớp con. Vấn đề là làm thế nào để khai báo một lớp có cơ sở là SomeBaseClass trong Class B.phương pháp chung trong lớp trừu tượng

public abstract class A 
{ 
    protected abstract void Add<T>(T number) where T : SomeBaseClass; 
} 

public class B : A 
{ 
    protected override void Add<T>(T number) 
    { 
     throw new NotImplementedException(); 
    } 
} 
+0

thể bạn thực hiện một ràng buộc cho lớp thay vì phương thức. –

Trả lời

10

Tôi nghĩ rằng bạn muốn lớp cơ sở để có một tham số kiểu, không phải là một phương pháp cụ thể:

public abstract class A<T> where T : SomeBaseClass 
{ 
    protected abstract void Add(T number); 
} 

public class B : A<C> { 

    protected void Add(C number) { ... } 
} 
+0

Cảm ơn bạn đã phản hồi. Nhưng có cách nào để thực hiện điều này mà không thay đổi lớp A? – stech

+3

@stech, nếu bạn muốn các lớp con kiểm soát các đối số kiểu, các tham số kiểu thuộc về lớp. Nếu bạn muốn * người gọi * của phương thức để kiểm soát các đối số kiểu, các tham số kiểu thuộc về phương thức. –

+1

Không - bạn không thể hạn chế các tham số kiểu của phương thức trong một lớp bắt nguồn từ lớp chứa của phương thức đó. Đó sẽ là một sự thay đổi của chữ ký phương thức. –