załóżmy, że jest to metoda, która trwa zmienną liczbę argumentów:Jak stworzyć delegata do celu ze zmienną liczbą argumentów
void Target(params object[] args);
Aby dołączyć to do działania z konkretną listą parametrów tylko możemy utwórz wyrażenie lambda:
Action<int, int> someAction += (a, b) => Target(a, b);
Czy istnieje możliwość dynamicznego utworzenia tego wyrażenia lambda, aby móc dołączyć handler do dowolnego typu zdarzenia? Coś jak:
someAction += CreateDelegate(typeof(someAction), Target);
Próbowałem użyć Delegate.CreateDelegate
ale oczekuje, że cel dostarczenie sposobu z betonu listy argumentów. Mam wrażenie, że powinno być możliwe z Expression.Lambda
, ale na razie nie miałem żadnego sukcesu. Masz pomysł?
Edit
przemianowany na imprezę do działania i obsługi do celu.
Zdarzenia powinny oczywiście mieć dokładnie 2 parametry : nadawca i argumenty. –
@Henk Holterman INHO events może być także Akcje. Możliwe jest przekazywanie argumentów bezpośrednio i nie ma potrzeby pakowania ich w obiekt EventArgs. I jak często używasz obiektu nadawcy w programie obsługi? –