[英]How to make concrete implementation more generic
I have this interface 我有这个界面
public interface IMapper
{
bool CanMap(List<Field> fields);
AccountHolder Map(List<Field> fields);
}
I have multiple classes that implements this interface. 我有多个实现此接口的类。 Given below is an example of this implementation.
下面给出的是此实现的示例。
public class DepositorMapper : IMapper
{
private readonly IFormUIElementHelper _formHelper;
public DepositorMapper(IFormUIElementHelper formHelper)
{
_formHelper = formHelper;
}
public bool CanMap(List<Fields> fields)
{
var taxId = _formHelper.GetFieldValue<string>(fields, FormsAttributes.DepositorTaxId);
return !string.IsNullOrWhiteSpace(DepositorTaxId);
}
}
The only difference in each concrete implementation is the 'FormsAttributes.DepositorTaxId'. 每个具体实现中的唯一区别是“ FormsAttributes.DepositorTaxId”。 How can i make this more generic?
我该如何使其更通用?
You can make an abstract class like that: 您可以像这样创建一个抽象类:
public abstract class BaseDepositorMapper : IMapper
{
private readonly IFormUIElementHelper _formHelper;
public BaseDepositorMapper (IFormUIElementHelper formHelper)
{
_formHelper = formHelper;
}
public bool CanMap(List<Fields> fields)
{
var taxId = _formHelper.GetFieldValue<string>(fields, GetDepositorTaxId());
return !string.IsNullOrWhiteSpace(taxId);
}
public abstract DepositorTaxIdType GetDepositorTaxId();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.