2012-02-17 41 views
7

Tôi có thể đặt quy tắc cho lớp thừa kế lớp cơ sở của mình hay không. ví dụ. Person : BaseClass, tôi muốn Person để triển khai iSomeKindOfInterface, nếu Person không triển khai giao diện, nó không được phép kế thừa từ BaseClass.Quy tắc cho kế thừa lớp

Tôi biết đây là posibble trong các lớp cơ sở chung, nơi bạn có thể làm như sau

public BaseClass<T> 
    where T : iSomeKinfOfInterface 

Trả lời

10

Bạn có thể thực hiện giao diện trong lớp cơ sở của bạn và buộc các lớp kế thừa để cung cấp thực hiện:

public interface ISomeInterface 
{ 
    void DoSomething(); 
} 

public abstract class BaseClass : ISomeInterface 
{ 
    public abstract void DoSomething(); 
} 

public class Person : BaseClass 
{ 
    public override void DoSomething() 
    { 
     ... 
    } 
} 
2

Khai báo lớp học của bạn là

abstract BaseClass : ISomeKinfOfInterface 
+0

Không thể sử dụng lớp trừu tượng. Các lớp tôi đang nói về là điều khiển người dùng winforms. Khi tôi sử dụng một lớp cơ sở trừu tượng, tôi không thể kiểm soát người dùng trong nhà thiết kế Visual Studio ... – Captain0

+0

Lỗi tôi nhận được trong nhà thiết kế khi sử dụng lớp cơ sở chung giống như http://stackoverflow.com/questions này/3933218/form-designer-break-on-generic-abstract-usercontrol khi sử dụng các lớp trừu tượng, lỗi tương tự – Captain0

Các vấn đề liên quan