C # .NET принять действие в качестве параметра для метода, который предоставляет функцию, которая может быть выполнена из лямбда-экземпляров этого действия - PullRequest
0 голосов
/ 29 мая 2018

чтобы упростить то, что я только что написал, в основном означает, что я хочу что-то вроде этого:

var someClass = new someClass((func1, func2) =>
{
  if (cool)
  {
    func1(cool);
  }
  else
  {
    func2(cool);
  }
}

Возможно ли это?Я пытался с действием, но это не сработало.Буду очень признателен за помощь: D

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Вы можете создать метод, который принимает параметры Action и возвращает один из них на основе некоторых критериев, чтобы затем можно было выполнить возвращаемое Action на месте вызова.

Action method (Action a, Action b)
{
    if (cool)
    {
        return a;
    }
    else
    {
        return b;
    }
}
0 голосов
/ 29 мая 2018

Хорошо, я надеюсь, это то, что вы ищете:

  public class SomeClass
{
    public SomeClass(Action<Action<bool>, Action<bool>> func)
    {
    func(
            (i) =>{
                Func1(i);
            },

            (j) =>
            {
                Func2(j);
            });


    }

    public void Func1(bool cool)
    {

    }

    public void Func2(bool cool)
    {

    }

    public static void Main()
    {
        var someClass = new SomeClass((func1, func2) =>
          {
              var cool = true;
              if (cool)
              {
                  func1(cool);
              }
              else
              {
                  func2(cool);
              }
          });
    }
}
0 голосов
/ 29 мая 2018
 var f = new Func<int>(() => { return 1; });
 var result = f.Invoke();

Это то, что вам нужно?

Синтаксис с вводом и выводом:

var myfunction = new Func ((x, y, z) => {return a;});

var a = x.Invoke (x, y, z);

От правки комментария

 public class someclass
 {
      private Func A = ......
      private Func B = ......
      public void somemethod(type x)
      {
           if(x) this.A.Invoke();
           else this.B.Invoke();  
      }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...