我正在研究撤消-重做实现,我希望其堆栈上的撤消或重做项目包含对某个 Func<out TResult>
的引用。其中 TResult
本身就是一个 Func<TResult>
.重点是当Func
从撤消堆栈调用,然后将返回值存储在重做堆栈中(反之亦然)。
我不确定是否可以因此提出这个问题。
我能想到的最好的方法都行不通,正如您在此处看到的那样:
struct UndoRedoItem
{
public Func<Func<Func<Func<Func<Func<......>>>>>> UndoOrRedoFunc;
public string Description;
...
}
最佳答案
正如您所发现的,让撤消 Func 直接返回重做 Func 是行不通的,因为所需的类型参数会无限增长。您需要做的是引入一个间接级别,例如,通过让撤消 Func 返回要放置在重做堆栈上的 UndoRedoItem 而不仅仅是重做 Func:
struct UndoRedoItem
{
public Func<UndoRedoItem> UndoOrRedoFunc;
public string Description;
...
}
关于c# - Func<out TResult> 如何返回 Func<out TResult>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377881/