gpt4 book ai didi

c# - 必须在业务层注入(inject)规范?

转载 作者:太空狗 更新时间:2023-10-29 23:43:57 25 4
gpt4 key购买 nike

我正在尝试学习一些有关依赖注入(inject)和规范模式的知识。

如果我有这种情况:我有三种方法,它们有不同的验证规则。此规则由规范验证。那么...我的类必须像这样在构造函数上接收这些规范?

public PostService(IRepositorio rep, ISpecificationSave ss, SpecificationGet g, ISpecificationDelete sd) { 
// do things...
}

但如果这是正确的,当我添加一个新方法时,我需要更改构造函数以接收更多规范吗?

或者,即使使用 Dependency Inject,也更好,在这种情况下,在方法上创建一个 Specification 的实例,如何使用 Specification:

public void DoSomeThing(MyObject object) {
Specification<MyObject> specification = new Specification<MyObject>();
// do things...
}

我知道这个问题对你们中的一些人来说很简单,但我正在努力学习这些类型的模式。

最佳答案

您可以在每个验证器中使用这些规范,方法是在您的类中使用规范模式将它们一一添加,如下所示:

public Class Class1 : IClass1 {
private List<ISpecification> contents;
private List<ISpecification> specializations;

public List GetContents() {
return contents;
}

public Set GetFeatures() {
return specifications;
}

public Class1() {
features = new List<ISpecification>(){//put specializations who belongs this class here};
specialications = new List<ISpecification>();
}

public boolean Validator1() {
foreach(ISpecification as spec in this.specializations) {
if (!spec.GetSpecification().IsSatisfiedBy(this))
return false;
}
return true;
}
}

public class Specification1 : ISpecification {
private object requiredFeature;

public Specification1(object feature) {
requiredFeature = feature;
}

public boolean IsSatisfiedBy(IClass class) {
return class.GetFeatures().contains(requiredFeature);
}
}

然后,您可以通过以下方式在应用程序中添加规范:

IClass1 class = new Class1();
class.GetFeatures().add(new Specialization1(// some feature));
class.GetFeatures().add(new Specialization2(// some feature));
class.GetFeatures().add(new Specialization3(// some feature));

关于c# - 必须在业务层注入(inject)规范?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38330243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com