【发布时间】:2020-09-04 21:59:23
【问题描述】:
我想问你我在这里遵循什么样的设计模式,某种适配器?您还推荐任何更简单的解决方案吗?
我正在尝试实现的是针对不同业务实现的验证模式。
我有一个实现接口的通用基类。 (是否可以使用抽象类?,应该如何注入?)
public class BaseValidation<T> : IValidationHandler<T>
{
public virtual void Validate(T modelToValidate)
{
//Base Implementation
}
}
界面
public interface IValidationHandler<T>
{
void Validate(T modelToValidate);
}
具体实现
public class SpecificValidation : BaseValidation<SpecificDTO>
{
public override void Validate(SpecificDTO modelToValidate)
{
base.Validate(modelToValidate);
//Implement here specific validation
}
}
注入
services.AddScoped(typeof(IValidationHandler<>), typeof(BaseValidation<>));
services.AddScoped<BaseValidation<SpecificDTO>, SpecificValidation>();
【问题讨论】:
-
我认为它非常接近原型模式。
-
嗨 Raju,原型模式的主要目标不是实现克隆功能吗?谢谢
-
使用原型实现克隆只是一个用例。您可以将原型用于很多事情。
-
在旁注中,不要把模式放在心上。对 SOLID 有很好的理解,并在编写代码时牢记这些,模式自然会发展 (IMO)。
标签: c# .net asp.net-core .net-core dependency-injection