2010-06-02 117 views
1

在Visual Studio網站中,我創建了一個用戶控件。此控件是從派生自System.Web.UI.UserControl的類(在App_Code中)派生的。這是一個帶有抽象方法的抽象類。然後我試圖實現在用戶控件的方法,但我從Visual Studio中的以下錯誤:在網站項目中從抽象基類派生用戶控制的問題

Error 1 'WebUserControl.AbstractMethod()': no suitable method found to override C:\Users\User\Documents\Visual Studio 2010\WebSites\Delme\WebUserControl.ascx.cs 10 28 C:\...\Delme\  
Error 2 'WebUserControl' does not implement inherited abstract member 'AbstractBaseClass.AbstractMethod()' c:\Users\User\AppData\Local\Temp\Temporary ASP.NET Files\delme\0eebaa86\f1a48678\App_Web_nrsbzxex.0.cs 14 

錯誤1說,我的抽象方法的覆蓋是無效的,它不承認抽象方法在基類中。錯誤2表示由asp.net自動構建的部分類不實現抽象方法!

請注意,在Web應用程序項目中使用該代碼時,此工作正常。

這是怎麼發生的?

回答

1

答案是基類中的抽象方法被標記爲內部。雖然這對於所有類都在同一個程序集中的Web應用程序項目都是適用的,但網站會以不同的方式做事。我猜想,部分類的自動創建的一半不會以與我的一半相同的程序集結束,因此內部關鍵字正在破壞它。

+0

一般來說,抽象方法應該是'protected',這樣只有* derived *分類才能訪問/覆蓋基本方法。 – RPM1984 2010-12-03 07:58:05