C# 如何让策略模式中的一个策略返回多个值
我实施了一个战略模式。其中一个策略应该返回2个值,而其余的则返回1个值。我目前在接口方法中使用out param,目的是使其可用于设置此值的一个策略,并使其在所有其他策略中为空,如下例所示 我想知道是否有更好的方法让一个策略返回多个值,而不让所有其他策略处理这个out参数(即使它们都将其设置为null) 例如:C# 如何让策略模式中的一个策略返回多个值,c#,design-patterns,strategy-pattern,C#,Design Patterns,Strategy Pattern,我实施了一个战略模式。其中一个策略应该返回2个值,而其余的则返回1个值。我目前在接口方法中使用out param,目的是使其可用于设置此值的一个策略,并使其在所有其他策略中为空,如下例所示 我想知道是否有更好的方法让一个策略返回多个值,而不让所有其他策略处理这个out参数(即使它们都将其设置为null) 例如: 我建议您考虑两个强有力的备选签名: (一) IEnumerable计算(十进制配置DAMT); (二) 十进制计算(十进制配置DAMT,额外操作); 您可以这样实现这些: var s
我建议您考虑两个强有力的备选签名: (一)
IEnumerable计算(十进制配置DAMT);
(二)
十进制计算(十进制配置DAMT,额外操作);
您可以这样实现这些:
var s = new Strategy1();
var extras = new List<decimal>();
decimal r = s.Calculate(1m, x => extras.Add(x));
(一)
公共IEnumerable计算(十进制金额)
{
收益率1m;
收益率42m;
收益率2m;
}
(二)
公共十进制计算(十进制金额,额外操作)
{
额外(1米);
额外(42m);
返回2m;
}
第二个选项可以这样使用:
var s = new Strategy1();
var extras = new List<decimal>();
decimal r = s.Calculate(1m, x => extras.Add(x));
var s=newstrategy1();
var extras=新列表();
十进制r=s.Calculate(1m,x=>extras.Add(x));
结果是
r==2m
&extras
包含1m
&42m
我建议您考虑两个强有力的备选签名:
(一)
IEnumerable计算(十进制配置DAMT);
(二)
十进制计算(十进制配置DAMT,额外操作);
您可以这样实现这些:
var s = new Strategy1();
var extras = new List<decimal>();
decimal r = s.Calculate(1m, x => extras.Add(x));
(一)
公共IEnumerable计算(十进制金额)
{
收益率1m;
收益率42m;
收益率2m;
}
(二)
公共十进制计算(十进制金额,额外操作)
{
额外(1米);
额外(42m);
返回2m;
}
第二个选项可以这样使用:
var s = new Strategy1();
var extras = new List<decimal>();
decimal r = s.Calculate(1m, x => extras.Add(x));
var s=newstrategy1();
var extras=新列表();
十进制r=s.Calculate(1m,x=>extras.Add(x));
结果是
r==2m
&extras
包含1m
&42m
public class CalculateResult {
decimal amount {get;set}
decimal? recurrent {get;set}
}
我建议创建一个同时包含这两个元素的类
public class CalculateResult {
decimal amount {get;set}
decimal? recurrent {get;set}
}
我建议您不要返回原始数据类型,而是返回一个用户定义的数据类型(如类、结构),其中包含作为属性的所有必需信息
class result
{
decimal result1;
decimal? result2;
.......
}
我建议您不要返回原始数据类型,而是返回一个用户定义的数据类型(如类、结构),其中包含作为属性的所有必需信息
class result
{
decimal result1;
decimal? result2;
.......
}
IEnumerable
作为返回类型?或者一个类中有两个属性(对于两个值)?如果您有许多策略返回一个值,而一个策略应该返回多个值,那么后者听起来并不属于同一个位置。它们是如何使用的?IEnumerable
可能作为返回类型?或者一个类中有两个属性(用于两个值)?如果您有许多策略返回一个值,而一个策略应该返回多个值,那么后者听起来并不属于同一个位置。它们是如何使用的?