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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.