【问题标题】:Are these values dependencies?这些值是依赖关系吗?
【发布时间】:2023-03-04 02:46:02
【问题描述】:

我有一个封装远程调用的对象。它需要凭据才能拨打电话。我认为凭据应该传递到构造函数中,这样,一旦创建了对象,用户就不必在每次调用对象时都继续传递它们。这似乎是一个明智的考虑因素。

如果我这样做,虽然我得到了使用此对象的客户端的额外复杂性,需要传递工厂而不是对象本身,因为它们的凭据要到运行时才能知道。因此,鉴于这项额外​​的工作,我想知道凭据(只是字符串值而没有代码)是否算作依赖项?

这个问题有意义吗?您会看到,在使用 IoC 之后,我已经意识到任何被传递到构造函数的东西都算作依赖项,因此可能应该是某个接口实现的实例。

【问题讨论】:

    标签: dependency-injection unity-container


    【解决方案1】:

    我不会将这些字符串视为依赖项。相反,创建一个可以注入的 IUserContextIUserCredentials 抽象。

    【讨论】:

    • 其实我正在使用 Credentials 类来减少参数数量。 ;) 但我不相信......只是将一些字符串值包装在容器中并不会改变被实例化的对象需要将数据传递给构造函数而不是代码实现的事实。因此,如果您认为可以添加“IUserContext”,那么我认为可以传入原始字符串。
    • 我认为将字符串包装在容器中确实可以更清楚地了解使用工厂时的值是什么,例如,这样... Func
    • 字符串不是依赖,它们是配置。使用构造函数注入注入配置值通常很好,但我试图防止在单个构造函数中将依赖项与配置值混合。当使用信息是“上下文”特定的时,IUserContext 会变得非常有用。考虑每个线程都有一个用户(例如 ASP.NET)。
    • “我试图防止在单个构造函数中将依赖项与配置值混合。”那你是怎么做到的呢?
    • 通过将这些配置值提取到它们自己的类中,或使用这些配置值的属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    • 2015-12-28
    • 1970-01-01
    • 2018-06-20
    • 2016-07-13
    • 2019-02-25
    相关资源
    最近更新 更多