Добрый день. Нужно иметь иерархию классов, кот принимает объект, трансформирует его и возвращает другой объект. Вот 2 моих решения
public abstract class FirstAbstractBuilder<TBuildSource, TBuildResult>
where TBuildSource : class
where TBuildResult : class, new()
{
protected abstract void Build(TBuildSource buildSource, TBuildResult classBuildResult);
}
public abstract class SecondAbstractBuilder<TBuildSource, TBuildResult>
where TBuildSource : class
where TBuildResult : class, new()
{
protected TBuildSource Source { get; }
protected TBuildResult Result { get; }
protected abstract void Build();
}
Т.е. в первом случая я в каждый метод передаю параметры. А во втором случае я в конструкторе их запоминаю в поля и везде их использую