【发布时间】:2010-07-15 15:15:18
【问题描述】:
这对大多数人来说似乎很明显,但我只是想确认依赖注入 (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。
[顺便说一下,根据我正在使用的代码中的 cmets,上面的代码是“由 wsdl 自动生成的”。所以我并不特别想更改这段代码,尽管我也没有看到自己重新生成它。所以也许改变这个代码是好的。]
我可以看到自己制作了一个替代构造函数,它接受一个字符串作为参数并以这种方式初始化this.Url,但我不确定这是保持松散耦合关注点分离的正确方法。 (SoC)
对这种情况有什么建议吗?
【问题讨论】:
标签: c# dependency-injection separation-of-concerns