1

在 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自动构建的部分类没有实现抽象方法!

请注意,当代码用于 Web 应用程序项目时,这可以正常工作。

为什么会这样?

4

1 回答 1

1

答案是基类中的抽象方法被标记为internal。虽然这对于所有类最终都在同一个程序集中的 Web 应用程序项目来说很好,但网站做的事情却不同。我猜想部分类的自动创建的一半不会与我的一半在同一个程序集中,因此 internal 关键字正在破坏它。

于 2010-06-03T09:20:53.943 回答