[英]Polly in base class execute abstract method with paramter
我正在尝试在基类中添加 Polly 策略。 问题是我想重试的方法是一个带有参数的抽象方法,子类定义了该参数。 代码示例:
public abstract class BaseClass
{
protected BaseClass()
{
// original code
// someEvent += OnChange;
someEvent += OnChangeBase;
}
private void OnChangeBase()
{
var policy = GetRetryPolicy();
// how do I use the bool parameter from children class?
policy.Execute(() => OnChange(??));
}
protected abstract void OnChange(bool param);
}
我如何实现这一目标?
这可以通过标准抽象类模式来解决。 解决方案没有特别不同,因为波莉参与其中。
您可以添加到基类:
protected abstract bool GetBoolParameterValue(); // choose a name more meaningful to your use case
然后通过策略执行的代码行变为:
policy.Execute(() => OnChange(GetBoolParameterValue()));
这使用了抽象方法,但您也可以使用抽象属性; 或在基类上定义的 bool 字段。
或者:问题表明OnChangeBase
的签名是OnChangeBase()
。 但是如果OnChange
的原始签名是OnChange(bool)
,你能这样做吗?
public abstract class BaseClass
{
protected BaseClass()
{
// original code
// someEvent += OnChange;
someEvent += OnChangeBase;
}
private void OnChangeBase(bool foo)
{
var policy = GetRetryPolicy();
policy.Execute(() => OnChange(foo));
}
protected abstract void OnChange(bool param);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.