Methode indirekt aufrufen

29/04/2009 - 16:04 von Alexander Mueller | Report spam
Hallo

Ich habe in einer Klasse C eine Reihe von Methode, die alle keine
Parameter
benötigen und einen Boolschen Rückgabewert haben.

Class C

Function A() As Boolean
..
Return True
End Function

Function B() As Boolean
..
Return False
End Function

End Class


Nun möchte ich in einer übergeordneten Klasse B, die ein C-Member hat
diese Methoden aufrufen und immer auch noch gleichartige Routinen
davor und danach aufrufen:

Class B

Private _C As C

Function doA(kat as K, b as B) As Boolean
Routine1(k)
Dim retval _C.A()
Routine2(b)
Return retval End Function

Function doB(k as K, b as B) As Boolean
Routine1(k)
Dim retval = _C.B()
Routine2(b)
Return retval
End Function

End Class


Ich würde das jetzt gerne vereinheitlichen, indem ich eine allgemeinen
Routine die Adresse
der aufzurufenden Methode übergbe, diese aufrufe un den Rest
einheitlich gestalte:

Class B

Private _C As C

Function RunMeth(dim method As ???, kat as K, b as B) As Boolean

Routine1(k)
...
Dim retval = method.Invoke()
Routine2(b)
Return retval

End Function

Function doA(kat as K, b as B) As Boolean
Return RunMeth(AddressOf _C.A, k, b)
End Function
Function doB(kat as K, b as B) As Boolean
Return RunMeth(AddressOf _C.B, k, b)
End Function


End Class


Ich weiss es geht irgendwie mit Delegates bzw Action-Objekten
Ich scheitere aber daran dass die Methode einen Rückgabewert hat
und auch daran wie ich die Adress des Members übergebe

Irgendwelche Ideen?
Ich würde gerne keine Reflections verwenden.


MfG,
Alex
 

Lesen sie die antworten

#1 Armin Zingler
30/04/2009 - 01:58 | Warnen spam
Alexander Mueller wrote:
Hallo

Ich habe in einer Klasse C eine Reihe von Methode, die alle keine
Parameter
benötigen und einen Boolschen Rückgabewert haben.

[...]



Ich neige dazu, solche Fragen nicht generell, ohne konkreten Einsatzzweck
beantworten zu können/wollen. Eine technische Lösung zu finden wàre nicht
das Problem... Doch ist sie, da der Aufrufer von "RunMeth" das private
C-Objekt nicht kennt.

Könntest du aso etwas weniger abstrakt die Aufgabe beschreiben?

Ich würde gerne keine Reflections verwenden.



Guter Vorsatz!


Armin

Ähnliche fragen