我正在使用委托在许多功能之间进行动态选择,即
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;
}
我使用委托而不是一些指示方向的参数的原因是它ctrlXferFunction
被多次调用并且if {..} else {..}
在任何地方使用变得非常乏味。
我现在的问题是我不知道实际调用了哪个控制传递函数。如果我尝试if(ctrlXferFunction == CtrlRead)
使用 la Python 或 JavaScript,则会收到==
无法在方法组和 CtrlTransfer 之间使用的错误。
有没有办法知道实际调用了哪个函数?
(如果我犯了任何术语错误,我深表歉意。我是 C# 新手)