구조 맵에서 inteface로 감싸지 않고 비 침해 유형을 주입
-
19-08-2019 - |
문제
IdynamicValue 인스턴스를 모두 구성하는 간단한 SM 레지스트리가 있습니다. 나는 비 침해 유형 인 몇 가지 대조적 인 주장이 있습니다 (제 경우에는 dateTime과 t의 술어). 인터페이스로 클래스에 랩핑하지 않고도 주입 할 수있는 방법이 있습니까 (자동 유대일 수 있음). 다음 코드 스 니펫은 내가 달성하고 싶은 것을 보여줍니다.
ForRequestedType<IDynamicValue>().AddInstances(x =>
{
x.OfConcreteType<DateTimeGenerator>().WithName("DateTime")
.WithCtorArg("keyName").EqualTo("DateTime")
.WithCtorArg("startDate").EqualTo(DateTime.Now.AddMonths(-1))
.WithCtorArg("minuteIntervalDelta").EqualTo(60);
});
이 예제는 실행되지만 예외로 실패합니다.
StructureMap 예외 코드 : 202 플러그인 패밀리 시스템에 대해 정의 된 기본 인스턴스 없음.
감사합니다, Nic
편집하다:
Freddy Rios 솔루션은 내가 필요한 것에 완벽하게 작동했습니다. 회의자 주장을 자동으로 배선하고 있다면이 작업을 수행하는 방법이 있는지 여전히 궁금합니다 (따라서 ConstructedBy ())를 사용할 수 없습니다.
해결책
이미 모든 인수를 생성자에게 전달하는 경우 대신 건설을 사용할 수 있습니다.
x.ConstructedBy(y => new DateTimeGenerator(
"DateTime", DateTime.Now.AddMonths(-1), 60
)
).WithName("DateTime");
제휴하지 않습니다 StackOverflow