这对大多数人来说似乎很明显,但我只是想确认依赖注入(DI)依赖于接口的使用。依赖注入(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
这种方式,但我不知道这是关于正确的方法保持松散耦合分离的担忧。 (SoC)
针对这种情况的任何建议?
我给你的绿色复选标记,但大卫和彼得的答案也很好。感谢您澄清接口不是必需的。 – Pretzel 2010-07-15 17:42:53