문제

IOC- 프레임 워크의 생성자에게 인수를 전달하려면 어떻게해야합니까? 나는 다음과 같은 일을하고 싶다 : (ioc- 프레임 워크가 되려고 노력하고있다;)))))))))

object objectToLogFor = xxx;
container.Resolve<ILogging>(objectToLogFor); 

public class MyLogging : ILogging
{
    public MyLogging(object objectToLogFor){}
}

이것은 StructureMap에서는 불가능한 것 같습니다. 그러나 나는 누군가가 나를 잘못 증명하는 것을보고 싶다.

다른 프레임 워크가 기능이 더 풍부합니까? 아니면 IOC- 프레임 워크를 잘못 사용하고 있습니까?

도움이 되었습니까?

해결책

구조 맵에서 with 메소드를 사용하여이를 달성 할 수 있습니다.

string objectToLogFor = "PolicyName";
ObjectFactory.With<string>(objectToLogFor).GetInstance<ILogging>();

보다: http://codebetter.com/blogs/jeremy.miller/archive/2008/09/25/using-structuremap-2-5-tinject-endity-objects-into-services.aspx

다른 팁

Castle Windsor :

var foo = "foo";
var service = this.container.Resolve<TContract>(new { constructorArg1 = foo });

생성자 인수를 지정하기 위해 익명 객체를 사용하십시오.

StructureMap 사용 :

var foo = "foo";
var service = container.With(foo).GetInstance<TContract>();

이것이 어떻게 언어에 대한 언어가 될 수 있습니까? 이것은 해당 프레임 워크의 구현 세부 사항입니다.

스프링은 당신이 당신의 일이라면 값/참조 목록으로 c'tor args를 지정하도록합니다. 그러나 부동산 주입과 비교할 때 읽기 쉬운 것은 아닙니다.

어떤 사람들은 이것에 대해 칼라 아래에서 뜨거워지고, c'tor 주입은 Java에서 유일한 실-안전한 접근법이라고 주장합니다. 기술적으로 그들은 정확하지만 실제로는 중요하지 않은 경향이 있습니다.

그것은 매우 일반적인 요구가 아니어야하지만 때로는 유효한 것입니다. 새끼, StructureMap보다 가벼워서 컨텍스트에서 과도 객체를 검색 할 때 매개 변수를 전달할 수 있습니다. Spring.net 도.

대부분의 경우, IOC 컨테이너에서 선언 된 객체는 일시적이지 않으며 생성자/속성/방법을 통해 다른 비 유도 물체를 의존성으로 받아들입니다.

그러나 컨테이너를 공장으로 사용하지 않아도되고 해결하려는 물체를 충분히 제어 할 수 있다면 어떤 식 으로든 자연스럽고 위험한 소리가 덜 될 경우에도 속성 또는 방법 주입을 사용할 수 있습니다.

예, 다른 프레임 워크는 기능이 더 풍부합니다. 생성자 주입을 허용하는 IOC 프레임 워크를 사용해야합니다. Spring은 생성자 의존성 주입을 허용하는 다중 언어 IOC 컨테이너의 예입니다.

다른 IOC 프레임 워크는 더 많은 기능이 풍부합니다.

즉, 확인하십시오 Parameterresolution AutoFac과 함께

윈저로 쉽게 할 수 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top