型推論を使用するいくつかの機能を持つ基本クラスがあります...
public abstract class Processor<T>
{
...
public IProcessBuilder<T, TResult> Process<TResult>(Expression<Func<T, TResult>> propertyOfT)
{
}
public abstract void SetProcessors();
}
次に、2つのクラスがあります。
public class EntityBase
{
public string Name { get; set; }
}
public class EntityChild : EntityBase
{
public string Description { get; set; }
}
そして、これら2つに、これら2つのクラスを構成する2つのプロセッサーもあります。
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();
}
}