我想写一系列相互调用的代表。它有点像多播委托,但不是这样 - 它是串行需要的“串行”。每个委托中的内部逻辑表示每个后续调用必须来自先前的委托,而不是来自编组机制。
示例:
[Test]
public void Test2() {
Action a = () => {
Action b = () => {
Action c = () => {
Console.WriteLine("test");
};
c.Invoke();
};
b.Invoke();
};
a.Invoke();
}
这看起来可能是通过codegen,但我宁愿不这样做。
有什么想法吗?
答案 0 :(得分:0)
代表链接列表怎么样?像这样:
public class Node
{
protected Node Next { get; private set; }
private Delegate m_actionDel;
private object[] m_args;
public Node(Node next, Delegate actionToPerform)
{
Next = next;
m_actionDel = actionToPerform;
}
public void InvokeChain()
{
try
{
m_actionDel.DynamicInvoke(m_args);
}
catch(Exception e)
{
// handle exception
}
if (Next != null)
Next.InvokeChain();
}
}
这只是一个快速草案,我实际上没有编译或运行此代码,但它应该给你一个想法。