我有这个界面
public interface IMapper
{
bool CanMap(List<Field> fields);
AccountHolder Map(List<Field> fields);
}
我有多个实现此接口的类。下面给出了这个实现的一个例子。
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);
}
}
每个具体实现的唯一区别是&#39; FormsAttributes.DepositorTaxId&#39;。我怎样才能使这更通用?
答案 0 :(得分:0)
你可以创建一个这样的抽象类:
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();
}