Если ваш Method1<Guid, BECustomer>
принимает аргумент Func<Guid, BECustomer>
, Func<Guid, BECustomer>
является синонимом:
public delegate BECustomer Func(Guid arg);
На самом деле все Func
- это обобщенный делегат:
public delegate TResult Func<T, TResult>(T arg);
Компилятор может проанализировать ваш код и определить, что ваш Func<Guid, BECustomer>
совместим с группой методов для Facade.Customers.GetSingle
, поскольку подпись метода совпадает с подписью делегата.
Это синтаксический сахар и еще один пример того, как компилятор выполняет за вас всю тяжелую работу.