我有一个基类,它具有一些使用类型推断的功能......
public abstract class Processor<T>
{
...
public IProcessBuilder<T, TResult> Process<TResult>(Expression<Func<T, TResult>> propertyOfT)
{
}
public abstract void SetProcessors();
}
然后我有两个类:
public class EntityBase
{
public string Name { get; set; }
}
public class EntityChild : EntityBase
{
public string Description { get; set; }
}
在这两个之上,我还有两个配置这两个类的处理器:
public class EntityBaseProcessor : Processor<EntityBase>
{
public override void SetProcessors()
{
base.SetProcessors();
this.Process(entity => entity.Name)
.DoSomething();
}
}
现在的问题是我想为子类重用基实体类的配置过程,以避免代码重复:
public class EntityChildProcessor: EntityBaseProcessor
{
public override void SetProcessors()
{
base.SetProcessor();
this.Process(entity => /* entity.Description is of course missing */)
.DoSomething();
}
}
问题
我显然很累,因为我似乎找不到一种可行的方法来重用处理器类,因为继承的处理器类也应该使用继承的实体类进行处理。
我当然可以重复代码并将我的其他处理器编写为:
public class EntityChildProcessor: Processor<EntityChild>
{
public override void SetProcessors()
{
base.SetProcessor();
// repeated code for inherited property
this.Process(entity => entity.Name)
.DoSomething();
this.Process(entity => entity.Description)
.DoSomething();
}
}