这对大多数人来说可能很明显,但我只是想确认依赖注入(DI)依赖于使用接口。
更具体地说,在构造函数中将某个接口用作参数或在属性中定义某个接口(也称为Setter)的情况下,DI框架可以提供一个具体类的实例来满足该类中该接口的需求。 (如果这种描述不清楚,很抱歉。因为术语/概念对我来说仍然有些陌生,所以我有些困难来描述这一点)
我询问的原因是我目前有一个类有某种依赖关系。不是对象依赖,而是URL。该类如下[C#]:
SoapHttpClientProtocol类有一个名为Url的公共属性(它是一个普通的“字符串”),这里的构造函数将其初始化为硬编码值。
我是否可以使用DI框架在构建时注入不同的值?我认为不行,因为this.Url不是任何类型的接口;它是一个字符串。
顺便说一下,上面的代码是根据我正在使用的代码中的注释“由wsdl自动生成的”。因此,我不想特别更改此代码,尽管我也不打算重新生成它。所以也许更改此代码是可以的。
我可以看到自己制作一个接受字符串参数并以此方式初始化this.Url的替代构造函数,但我不确定这是否是保持松散耦合关注点分离(SoC)的正确方法。
对于这种情况有什么建议吗?
更具体地说,在构造函数中将某个接口用作参数或在属性中定义某个接口(也称为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不是任何类型的接口;它是一个字符串。
顺便说一下,上面的代码是根据我正在使用的代码中的注释“由wsdl自动生成的”。因此,我不想特别更改此代码,尽管我也不打算重新生成它。所以也许更改此代码是可以的。
我可以看到自己制作一个接受字符串参数并以此方式初始化this.Url的替代构造函数,但我不确定这是否是保持松散耦合关注点分离(SoC)的正确方法。
对于这种情况有什么建议吗?