gpt4 book ai didi

.net - 依赖注入(inject) : Combine Constructor Injection benefit with Setter Injection benefits?

转载 作者:行者123 更新时间:2023-12-04 06:28:48 25 4
gpt4 key购买 nike

我很恼火必须通过 Constructor 传递管道对象,因为我想为业务实体或要传递的值保留构造函数参数。

所以我想通过 setter ,但只要这些 setter 没有被填充,我的包含依赖项的对象就不应该被实例化。

如何在没有一堆 if dependency01 not empty 和 dependency02 not empty 知道 BOTH 不能为空的情况下做到这一点?

最佳答案

在实例化之前,您无法在对象上设置任何内容,因此您的要求(如所述)是不可能的。

如果您使用静态工厂方法,则可以使用 setter - 但这需要您的构造函数是私有(private)的,因此实际上不会更改构造函数之外的任何内容。

您可以使用 Initialize方法依赖于设置的某些属性,但是您必须依赖于被调用的方法。这意味着要么进行大量检查以确保调用了该方法(例如,每个类方法都必须调用 if (!IsInitialized) throw ... ),要么您只是在代码中引入了脆弱性。

任何替代解决方案都比仅将绝对需要的数据放入构造函数中更不健壮或工作更多 - 这就是构造函数参数的用途。我的建议是,您需要重新审视您的任意要求,即“保留”构造函数参数,以支持更具有技术意义的东西。

关于.net - 依赖注入(inject) : Combine Constructor Injection benefit with Setter Injection benefits?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700986/

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