Ik heb in een webservice een generieke RequestHandler functie om alle webmethods mee af te handelen:
Dit roep ik bijv op deze manier aan:
Nu werkt dit opzich wel, maar zoals je ziet geef ik nu 2x de request door, omdat ik niet kan vinden hoe ik die parameter uit de Func te pakken krijg.. Indexing op de action werkt iig niet, Visual Studio weet dan wel te vertellen dat er een 'arg' van type RequestBase inzit, maar ik krijg het er niet uit
Op MSDN ook geen goed voorbeeld kunnen vinden, dus hopelijk weet iemand hier het wel
C#:
1
2
3
4
5
| public T RequestHandler<T>(RequestBase request, Func<RequestBase, T> action) where T : ResponseBase, new() { // logging, error handling, e.d. weggelaten ;) return action.Invoke(request); } |
Dit roep ik bijv op deze manier aan:
C#:
1
2
3
4
5
6
7
8
9
| public GetNawResponse GetNaw(GetNawRequest request) { return RequestHandler(request, r => GetNawInternal(request)); } private GetNawResponse GetNawInternal(GetNawRequest request) { // implementatie } |
edit:
(extra info):
De inhoud van de request parameter wordt in de RequestHandler gelogd(extra info):
Nu werkt dit opzich wel, maar zoals je ziet geef ik nu 2x de request door, omdat ik niet kan vinden hoe ik die parameter uit de Func te pakken krijg.. Indexing op de action werkt iig niet, Visual Studio weet dan wel te vertellen dat er een 'arg' van type RequestBase inzit, maar ik krijg het er niet uit
[ Voor 4% gewijzigd door Haan op 21-12-2011 09:34 ]
Kater? Eerst water, de rest komt later