目前我正在尝试使用依赖注入容器,这次是使用 Unity。
给定以下界面:
public interface IPodcastCommService
{
void Download();
void Upload();
}
以及以下实现:
public class PodcastService
{
private IPodcastCommService commservice;
private String url;
public PodcastService(String url, IPodcastCommService commservice)
{
this.commservice = commservice;
this.url = url;
}
}
由于构造函数的原因,我一直在寻找一种将参数传递给它的解决方案并找到它:
var p = container.Resolve<IPodcastCommService>(new ParameterOverride("url", myUrl));
到目前为止一切都很好,但同时我读到这有多糟糕以及课程的设计有多糟糕,是的,它看起来有点难看。但是如何以优雅的方式将参数传递给类?
我的第一个想法是将它作为一个属性来做,但是每次我需要它已经给出的 Url 时我都必须检查它。
更新: 一个例子,我读到这是一个糟糕的设计,是这样的:
但是在某些情况下,您可能已经为解析操作传递了自定义构造函数参数。有些人可能会争辩说,这是糟糕架构的尖叫,但有些情况下,例如将 DI 容器引入遗留系统可能需要这些操作。
资料来源: http: //mikaelkoskinen.net/unity-passing-constructor-parameters-to-resolve/