gpt4 book ai didi

c# - 委托(delegate) System.Action 不接受 1 个参数

转载 作者:行者123 更新时间:2023-11-30 13:59:12 26 4
gpt4 key购买 nike

Action :

readonly Action _execute;

public RelayCommand(Action execute)
: this(execute, null)
{
}

public RelayCommand(Action execute, Func<Boolean> canExecute)
{
if (execute == null)
throw new ArgumentNullException("execute");
_execute = execute;
_canExecute = canExecute;
}

其他类的代码:

public void CreateCommand()
{
RelayCommand command = new RelayCommand((param)=> RemoveReferenceExcecute(param));}
}

private void RemoveReferenceExcecute(object param)
{
ReferenceViewModel referenceViewModel = (ReferenceViewModel) param;
ReferenceCollection.Remove(referenceViewModel);
}

为什么会出现以下异常,如何解决?

Delegate 'System.Action' does not take 1 arguments

最佳答案

System.Action是无参数函数的委托(delegate)。使用 System.Action<T> .

要解决此问题,请更换您的 RelayAction用类似下面的东西上课

class RelayAction<T> {
readonly Action<T> _execute;
public RelayCommand(Action<T> execute, Func<Boolean> canExecute){
//your code here
}
// the rest of the class definition
}

备注RelayAction类应该变得通用。另一种方式是直接指定参数类型 _execute会收到,但这样你就无法使用你的 RelayAction类(class)。因此,需要在灵 active 和稳健性之间进行权衡。

一些 MSDN 链接:

  1. System.Action
  2. System.Action<T>

关于c# - 委托(delegate) System.Action 不接受 1 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14029596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com