this 질문을 바탕으로 ioc-container를 사용할 때 런타임 매개 변수로 새 객체를 초기화하는 방법은 Abstract Factory를 만드는 것입니다. 를 구축하기봉인 된 클래스에 대한 Abstract Factory의 대안이 있습니까?
internal sealed class AssetsDownloadingProcess
{
private readonly IBackgroundWorker _backgroundWorker;
private readonly IAssetsStorage _assetsStorage;
private readonly Parameters _parameters;
public AssetsDownloadingProcess(IBackgroundWorker backgroundWorker,
IAssetsStorage assetsStorage, Parameters parameters)
{
_parameters = parameters.Clone();
_backgroundWorker = backgroundWorker;
_assetsStorage = assetsStorage;
}
}
그리고 공장 : 내 예에서
,이 클래스가 당신이 볼 수있는
internal sealed class AssetsDownloadingProcessFactory
{
private readonly IBackgroundWorker _backgroundWorker;
private readonly IAssetsStorage _assetsStorage;
public AssetsDownloadingProcessFactory(IBackgroundWorker backgroundWorker,
IAssetsStorage assetsStorage)
{
_backgroundWorker = backgroundWorker;
_assetsStorage = assetsStorage;
}
public AssetsDownloadingProcess CreateProcess(
AssetsDownloadingProcess.Parameters parameters)
{
return new AssetsDownloadingProcess(
_backgroundWorker, _assetsStorage, parameters);
}
}
이 AssetsDownloadingProcess
어떤 인터페이스를 구현하지 않습니다 교체되지 않습니다 다른 클래스와. 따라서이 팩토리는 쓸데없는 코드 일뿐입니다. AssetsDownloadingProcessFactory
생성자를 위해 완전히 생략 할 수 있습니다. 그러나, 나는 의존성 주입을 생성자에 사용할 수 없다.
공장 만들기와 쓸데없는 코드 생성의 번거 로움없이 내 IoC 컨테이너에서 Injection의 이점을 사용하고 싶습니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 뭔가 빠졌거나 DI 잘못 사용하고 있습니까?