代码之家  ›  专栏  ›  技术社区  ›  Sprintstar

从网站项目中的抽象基类派生用户控件时出现问题

  •  1
  • Sprintstar  · 技术社区  · 15 年前

    在Visual Studio网站中,我创建了一个用户控件。此控件派生自一个类(应用程序代码中),该类本身派生自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应用程序项目中使用时,这种方法可以很好地工作。

    为什么会这样?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Sprintstar    15 年前

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