Toon posts:

[vb.net]MustInherit class en Mustoverride functie en body im

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb de volgende code geschreven. Deze werkt gewoon goed.
Een base class en een aantal andere klassen die van de base class afstammen.
In de base class zit een functie Herbereken die na het uitvoeren van de Save en Delete functie altijd aangeroepen dient te worden. Nu heb ik het zo gedaan dat deze functie door de Inherited Class wordt aangeroepen. Is het mogelijk dat de functie Herbereken automatisch wordt uitgevoerd in de Bas Class als Save of Delete afgehandeld is?
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Public MustInherit Class BaseClass

  ...

  Public Sub New()
    ...
  End Sub

  Public MustOverride Sub Foo()
 
  Public MustOverride Function Save() As Boolean

  Public MustOverride Function Delete() As Boolean

  Public Function Herbereken() As Boolean

    ...

  End Function

End Class

Public Class InheritedClass
  Inherits BaseItem

  Public Sub New()
    MyBase.New()
  End Sub

  Public Function Save()
    ...

    Me.Herbereken

  End Function

  Public Function Delete()
    ...

    Me.Herbereken

  End Function

End Class

Eigenlijk zou ik zoiets willen, maar dat kan natuurlijk niet, omdat een mustoverride functie in een mustinherit class geen body mag hebben.
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Public MustInherit Class BaseClass

  ...

  Public Sub New()
    ...
  End Sub

  Public MustOverride Sub Foo()
 
  Public MustOverride Function Save() As Boolean
    Me.Herberekenen()
  End Function

  Public MustOverride Function Delete() As Boolean
    Me.Herbereken()
  End Function


  Public Function Herbereken() As Boolean

    ...

  End Function

End Class

Public Class InheritedClass
  Inherits BaseItem

  Public Sub New()
    MyBase.New()
  End Sub

  Public Function Save()
    ...

    Mybase.Save()   ' Of automatisch aanroep na afloop van de functie.

  End Sub

  Public Function Delete()
    ...

    Mybase.Delete()  ' Of automatisch aanroep na afloop van de functie.

  End If

End Class

  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
Doe het gewoon zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public abstract BaseClass
{
     public void Save()
     {
          SaveImpl();
          Herbereken();
     }
 
     public void Delete()
     {
           DeleteImpl();
           Herbereken();
     }

      protected abstract DeleteImpl();
 
      protected abstract SaveImpl();

     private void Herbereken()
     {
     }
}


Dan hoef je in je inherited class enkel de SaveImpl en DeleteImpl die de daadwerkelijke save en delete doen, te implementeren en je bent klaar.

https://fgheysels.github.io/


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

of

Visual Basic:
1
2
3
4
5
6
7
public MustInherit Class BaseClass
{
   public Overridable sub Save()
      ' code
      Herbereken()
   End Sub
End Class

Visual Basic:
1
2
3
4
5
6
public Class InheritedClass Inherits BaseClass
     Public Override Sub Save()
         ' Code
         Mybase.Save()
     End Sub
End Class

ASSUME makes an ASS out of U and ME


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:32
Da's gevaarlijker, aangezien je de mogelijkheid hebt om die functionaliteit van de base-class weg te laten.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dat is precies wat ik zocht! _/-\o_