C# 如何使具体实现更通用
我有这个接口C# 如何使具体实现更通用,c#,.net,C#,.net,我有这个接口 public interface IMapper { bool CanMap(List<Field> fields); AccountHolder Map(List<Field> fields); } 公共接口IMapper { bool CanMap(列表字段); 账户持有人映射(列表字段); } 我有多个实现这个接口的类。下面给出了该实现的一个示例 public class DepositorMapper : IMapper {
public interface IMapper
{
bool CanMap(List<Field> fields);
AccountHolder Map(List<Field> fields);
}
公共接口IMapper
{
bool CanMap(列表字段);
账户持有人映射(列表字段);
}
我有多个实现这个接口的类。下面给出了该实现的一个示例
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);
}
}
公共类储户映射器:IMapper
{
私有只读IFormUIElementHelper _formHelper;
公共储户映射器(IFormUIElementHelper formHelper)
{
_formHelper=formHelper;
}
公共bool CanMap(列表字段)
{
var taxId=_formHelper.GetFieldValue(字段、FormsAttributes.DepositorTaxId);
return!string.IsNullOrWhiteSpace(DepositorTaxId);
}
}
每个具体实现的唯一区别是“FormsAttributes.DepositorTaxId”。如何使其更通用?您可以创建这样的抽象类:
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();
}
公共抽象类BaseDepositorMapper:IMapper
{
私有只读IFormUIElementHelper _formHelper;
public-BaseDepositorMapper(IFormUIElementHelper-formHelper)
{
_formHelper=formHelper;
}
公共bool CanMap(列表字段)
{
var taxId=_formHelper.GetFieldValue(字段,GetDepositorTaxId());
return!string.IsNullOrWhiteSpace(taxId);
}
公共抽象储户TaxidType GetDepositorTaxId();
}
您能详细解释一下“更通用”的含义吗?我们是否应该将其移入?GetDepositorTaxId
在这种设计中应该受到保护,而不是公开的。作为一处房产也可能更好,不过这可能取决于具体情况。谢谢!罗梅和塞维。我们是用一处房产做的。