У меня реализован шаблон стратегии. Предполагается, что одна из стратегий возвращает 2 значения, а остальные — 1 значение. В настоящее время я использую out param в методе интерфейса, чтобы он был доступен для одной стратегии, которая устанавливает это значение и делает его нулевым для всех других стратегий, как в приведенном ниже примере.
Я хотел бы знать, есть ли лучший способ, чтобы эта одна стратегия возвращала несколько значений, не заставляя все другие стратегии иметь дело с этим параметром out (даже если все они собираются установить его равным нулю). Например:
public interface IContributionStrategy
{
decimal (decimal configuredAmt, out decimal? recurrent);
}
public class Strategy1 : IContributionStrategy
{
public Strategy1 (int param1)
{
this.Param = param1;
}
public decimal Calculate(decimal amt, out decimal? recurrent)
{
recurrent = somevalue;
//some logic that uses amt and this.Param and performs calc
return calculatedLogic;
}
public class Strategy2 : IContributionStrategy
{
public decimal Calculate(decimal amt, out decimal? recurrent)
{
recurrent = null; //having to set this to null only because its in the Calculate() in the interface and this strategy is not using the recurrent value.
//some logic that uses amt and performs calc
return calculatedLogic;
}
}
IEnumerable<decimal?>
возможно в качестве возвращаемого типа? - person mjwills   schedule 04.07.2018