在Visual Studio网站中,我创建了一个用户控件。此控件派生自一个类(在App_Code中),该类本身派生自System.Web.UI.UserControl。这是一个带抽象方法的抽象类。然后我尝试在用户控件中实现该方法,但是我从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自动构建的partial类没有实现抽象方法!
请注意,在Web应用程序项目中使用代码时,此方法可以正常工作。
为什么会这样?
答案 0 :(得分:1)
答案是基类中的抽象方法标记为内部。虽然这适用于Web应用程序项目,其中所有类都在同一个程序集中,但网站以不同的方式执行操作。我想自动创建的部分类的一半不会与我的一半在同一个程序集中结束,因此内部关键字正在打破它。