Делегат действия в .NET2 - использование универсального типа «System.Action <T>» требует аргументов типа «1» - PullRequest
5 голосов
/ 25 ноября 2011

Я портирую рабочий код с .NET4 на .NET2 (устройство WinCE).

Использование Action без аргументов и возврата значений не разрешено в .NET2

ошибка компиляции в строке 5 ниже: Для использования универсального типа 'System.Action' требуются аргументы типа '1'

Обходные мысли?

//first state is the default for the system
    public enum States { EnterVoucherCode, EnterTotalSale, ProcessVoucher };
    public enum Events { PressNext, PressRedeem, ProcessSuccess, ProcessFail, PressBackToVoucherCode };

    public States State { get; set; }

    private Action[,] fsm; //Fails to compile here

    public FiniteStateMachine()
    {
        //array of action delegates
        fsm = new Action[3, 5] { 
        //PressNext,     PressRedeem,            ProcessSuccess,      ProcessFail,      PressBackToVoucherCode

1 Ответ

11 голосов
/ 25 ноября 2011

Действительно, неуниверсальный Action был добавлен в .NET 3.5.

Однако Action - это просто обычный тип делегата, так что вы можете просто свернуть свой собственный, например, так:

public delegate void Action();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...