Профил
Loading...
+ Нов въпрос
Hristo_Penchev avatar Hristo_Penchev 389 Точки

[Homework] OOP - Delegates and Events - Problem {2} - Problem 2. Asynchronous Timer - как да накараме класа да приема всякакви функции?

Здравейте, успях да направя задачата. Ето решението:
http://pastebin.com/m3rdPZ0Z

http://pastebin.com/FynCf47z

Проблемът е там, че в конструктора на класа задаваме да приема точно определен тип Action - примерно Action<int, string> или Action без параметри. И съответно можем да му зададем само такъв. Има ли начин да го накараме да приема всякакъв метод, без значение какви параметри изисква? 

-1
C# OOP Basics
Hristo_Penchev avatar Hristo_Penchev 389 Точки

Искам във функцията Action f да мога да присвоя всякакъв метод, без значение колко и какви аргументи приема. 

Знам как работят дженерик листовете по принцип, но в случая не рзбирам как да ги приложа. А ламбда изразите са ми като на виетнамски.

0
09/01/2015 23:07:26
vladislav_hadzhiyski avatar vladislav_hadzhiyski 66 Точки

Трябва да си направиш някакъв дженерик клас, който да прави това което искаш. С държавния Action не съм много сигурен че може да се получи.

Аз си представям нещата по следния начин.

Един дженерик който ще се държи като държавния Action

Action<R, Params>

R - return type на твоя Action

Params - друг клас който може да приеме един или повече параметъра и ги пази по някакъв начин

В твоя Action трябва да имаш и някакъв метод Execute() например който да свърши работата която трябва да се свърши.

0
09/01/2015 23:37:24
AleksandurSeferinkin avatar AleksandurSeferinkin 333 Точки

Мисля, че не можеш да приемаш методи с различен брой параметри, освен ако не са декларирани с params[]. Все пак това е строго-типизиран език. :)

Пример

0
10/01/2015 13:02:34