Я использую делегат динамически выбирать между многими функциями, т.е.Как узнать, какая функцию вызывались
delegate bool CtrlTransfer(int xferLength, ref byte[] buffer);
bool CtrlRead(int xferLength, ref byte[] buffer)
{ /* do a read */ }
bool CtrlWrite(int xferLength, ref byte[] buffer)
{ /* do a write */ }
, и они используются в функции диспетчерской, как
byte[] RunTest(CtrlTransfer ctrlXferFunction, /* a bunch of other args */) {
/* do some stuff */
ctrlXferFunction(/* its arguments */);
/* do some more stuff */
return someByteArray;
}
Причиной я m, используя делегат в отличие от некоторого аргумента, указывающего направление, что ctrlXferFunction
вызывается много раз, и использование if {..} else {..}
везде становится очень утомительным.
Моя проблема в том, что я не знаю, какая функция передачи управления была фактически вызвана. Если я попробую if(ctrlXferFunction == CtrlRead)
a la Python или JavaScript, я получаю сообщение об ошибке, которое ==
не может использоваться между группой методов и CtrlTransfer.
Есть ли способ узнать, какая функция была фактически вызвана?
(Мои извинения, если я сделал какие-терминологические ошибки Я новичок в C#.)
Что вы собираетесь делать с этой информацией? Почему бы не добавить логику в функции 'CtrlRead' и' CtrlWrite'? –
@ KarthikT Функции CtrlRead и Write выполняют только одно: чтение или запись на конечной точке управления (USB). В конце концов, функция RunTest должна будет расширяться для включения других типов чтения/записи. И интерфейс для переноса на разных конечных точках различен - отсюда разные функции. – Manu
Я действительно спрашивал о том, что вы будете делать, как только вы определяете, какая функция называется –