这对大多数人来说似乎很明显,但我只是想确认依赖注入 (DI) 依赖于接口的使用。
更具体地说,对于在其构造函数中具有某个接口作为参数的类或将某个接口定义为属性(又名 Setter)的情况,DI 框架可以移交具体类的实例以满足需求那个类中的那个接口。(如果此描述不清楚,请道歉。我无法正确描述这一点,因为术语/概念对我来说仍然有些新。)
我问的原因是我目前有一个具有某种依赖关系的类。与其说是对象依赖,不如说是 URL。该类看起来像这样 [C#]:
using System.Web.Services.Protocols;
public partial class SomeLibraryService : SoapHttpClientProtocol
{
public SomeLibraryService()
{
this.Url = "http://MyDomainName.com:8080/library-service/jse";
}
}
SoapHttpClientProtocol 类有一个名为的公共属性Url
(它是一个普通的旧“字符串”),这里的构造函数将它初始化为一个硬编码的值。
我可以使用 DI 框架在构建时注入不同的价值吗?我想不是,因为this.Url
不是任何一种Interface
;这是一个String
。
[顺便说一句,根据我正在使用的代码中的注释,上面的代码是“由 wsdl 自动生成的”。所以我并不特别想更改这段代码,尽管我也没有看到自己重新生成它。所以也许改变这个代码是好的。]
我可以看到自己制作了一个替代构造函数,它将字符串作为参数并this.Url
以这种方式初始化,但我不确定这是保持松散耦合关注点分离的正确方法。(系统级芯片)
对这种情况有什么建议吗?