Avatar billede conehead Nybegynder
04. september 2007 - 12:05 Der er 6 kommentarer

Tving subclass til at kalde en metode i en super class

Jeg har MyPage.aspx og BasePage.cs
MyPage nedarver fra BasePage

Jeg vil gerne være sikker på, at MyPage kalder metoden MyMethod som ligger i BasePage. Er der nogen mulighed for at lave et compile-time check af dette?

Lige nu tester jeg i BasePage´s OnPrerender event for om en bestemt variabel har en værdi, men jeg mener at have læst et sted, at det er muligt at gøre dette på en bedre måde.

Nuværende kode(BasePage.cs):

public void MyMethod(int id)
{
      this.id= id;
       
}

protected override void OnPreRender(EventArgs e)
    {
        if (this.id== 0)
        {
            throw new Exception("You must call MyMethod");
        }
       
        base.OnPreRender(e);
    }
Avatar billede hmortensen Nybegynder
04. september 2007 - 16:06 #1
Kan du ikke blot gøre brug af constructoren i super klassen?
Avatar billede conehead Nybegynder
04. september 2007 - 16:21 #2
Hvordan vil du gøre det? Hvordan vil du overloade constructoren i en side der nedarver fra System.Web.UI.Page og derefter sende en parameter med fra sub-klassen?
Avatar billede hmortensen Nybegynder
04. september 2007 - 16:33 #3
Subclass:
public SubClass()
{
  base.MyMethod(X);
}
Avatar billede hmortensen Nybegynder
04. september 2007 - 16:40 #4
Eller du kan lade SuperClass styrer det:

class SuperClass
{
  public SuperClass(object X)
  {
    this.MyMethod(X);
  }

  private void MyMethod(object X)
  {
    //
  }
}

class SubClass
{
  public SubClass(string s) : base(s)
  {
  }
}
Avatar billede conehead Nybegynder
05. september 2007 - 08:49 #5
Det kunne jeg godt gøre, men det er ikke den store forskel, da jeg stadig skal teste for om værdien er sat i OnPrerender i min super-class. Med mindre jeg fjerner min parameterløse default constructor fra min super-class, men det er såvidt jeg ved ikke tilladt.
Avatar billede hmortensen Nybegynder
10. september 2007 - 19:01 #6
Jo det kan du sagtens gøre, så du tvinger subklassen til at kalde superklassens constructor med det angivne parameter.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester