C# — метод принимает в виде параметра другой метод, как понимать?
Setup - это обычный метод.
На Returns не обращайте внимания, он тоже обычный метод, он сам по себе, это просто Fluid, делегаты и лямбды здесь ни при чем.
А вот то, что записано в виде лямбда-выражения - это делегат.
Я тут написал пример с четырьмя подобными синтаксисами, отличающимися внешне, но по сути равнозначными, если вы его воспроизведете (создадите приложение WinForms, форму и кнопку с обработчиком) то поймете, что это и примерно зачем оно может применяться:using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        public delegate void EventHandler2(
            int i
        );

        public Form1()
        {
            InitializeComponent();
        }

        void setEventHandler(EventHandler2 eh)
        {
            eh.Invoke(123);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Example 1
            setEventHandler(x => MessageBox.Show(x.ToString()));

            //Example 2 (equalent)
            setEventHandler((x) => { MessageBox.Show(x.ToString()); });

            //Example 3 (equalent)
            setEventHandler(delegate(int x) { MessageBox.Show(x.ToString()); });

            //Example 4 (equalent)
            setEventHandler(goodbyeDelegatesAndLambdas);
        }

        void goodbyeDelegatesAndLambdas(int x)
        {
            MessageBox.Show(x.ToString());
        }
    }
}
Т е m => m.ApplyDiscount(It.IsAny()) является чем то в стиле анонимного делегата? А где тогда происходит объявление самого класса-делегата? Или это просто какое то сокращение? А компилятор всё создаст за нас?
Правильно ли я понимаю что строкаmock.Setup(m => m.ApplyDiscount(It.IsAny()))
равносильнаpublic delegate какойтотип MyDelegate(какойтотиппараметра m);

public какойтотип Method(какойтотиппараметра m)
{
return m.ApplyDiscount(It.IsAny());
}

MyDelegate myDelegate = new MyDelegate(Method);

mock.Setup(myDelegate.Invoke(какойтотиппараметра m));
поправьте если я не прав, пожалуйста