CQS, SimpleInjector. , , (SOLID). , , , . , . .
Edit
, !:)
. CQS ( ) ( ). , IQueryHandler ICommandHandler, . , .
public interface ISaveComponent
{
Component SaveComponent(Component componentToSave);
}
public class SaveComponent : ISaveComponent
{
public Component SaveComponent(Component componentToSave)
{
}
}
public class SaveComponentValidation : ISaveComponent
{
private readonly ISaveComponent _saveComponent;
public SaveComponentValidation(ISaveComponent saveCompnent)
{
_saveComponent = saveCompnent;
}
public Component SaveComponent(Component componentToSave)
{
return _saveComponent.SaveComponent(componentToSave);
}
}
SimpleInjector (IoC/DI) , :
container.RegisterDecorator(typeof(ISaveComponent), typeof(SaveComponentValidation));
:
public class Program
{
public static void Main()
{
ISaveComponent handler = new SaveComponentValidation(new SaveComponent());
handler.SaveComponent(new Component());
}
}