2012-05-11 132 views
3

如何強制派生窗體實現基類的方法而不使其變爲抽象?c#替代摘要

我收到的錯誤是「設計人員必須創建一個'X'類型的實例,但它不能,因爲該類型被聲明爲抽象」。 預先感謝您。

回答

12

我會創建一個接口,以便每個表單都可以實現它。你能詳細解釋一下你的問題嗎?

+0

我需要應用限制或約束「虛擬」,要求在提前確保每個可能的派生類必須實現接口或接收編譯時錯誤。 – CSM

3

您不能強制類重寫基類方法,除非它被標記爲抽象,這也需要基類是抽象的。你有沒有想過爲這些方法定義一個接口?

+0

是的,但它不能幫助我。謝謝。 – CSM

0

您可以重寫基類並定義抽象或虛擬方法。也許這就是你想要的。這是工作環境中的現實。

2

正如renato所說,你可以創建一個抽象基類,它需要構造函數中的接口。這裏的時候,我做到了在AS3的一個例子,它應該是很容易理解發生了什麼,並把它應用到您的解決方案:


public class PyramidenMain extends ProbabilityGame implements IProbabilityGame{ 
    public function PyramidenMain(){ 
     super(this); 
     super.initialize(); 
    } 

    //implement interface 
} 

public interface IProbabilityGame{ 
     function getGame():MovieClip; 
     function customInit():void; 
     function customLoginSuccessful():void; 
     function customLoginError(xml:XML):void; 
     function customShowError(msg:String):void; 
     function createDemoProtocol():IProtocol; 
    } 

public class ProbabilityGame { 
    public function ProbabilityGame(game:IProbabilityGame) { 
     if(game == null) { 
      throw new Exception("unmet requirement, parameter containing an instance of IProbabilityGame"); 
     } 
     _game = game; 
    } 

    public function initialize() { 
     //do some logic 
     _game.customInit(); 
    } 
} 
+0

不幸的是它並沒有幫助(在我的特殊情況下)。其實我需要VS2010設計師的解決方法......謝謝。 – CSM