0

내가 사용하는 현재의 예를 시도했다, 그러나 나는 오류를 얻을 : https://gist.github.com/mhenrixon/772643석영에 IOC 구조 맵을 사용하는 방법은 무엇입니까?

ForSingletonOf<IScheduler>().Use(ctx => 
     { 
      var scheduler = ctx.GetInstance<ISchedulerFactory>().GetScheduler(); 
      scheduler.JobFactory = ctx.GetInstance<IJobFactory>(); 
      return scheduler; 
     }); 

이 오류는 "성명 본체와 람다 표현식은 식 트리로 변환 할 수 없습니다."

는 사실은 내가 IJobFactory 을 위해 사용 IOC의에 대한 솔루션을 필요로

답변

0

이 시나리오에서 당신이 단순한 표현을 사용할 수있는 것 - =의 오른쪽에 (A "문 바디"없이 중괄호를 의미)> ("going to") 연산자 - 람다 식은 아마 표현식 트리로 변환되어야합니다.

당신은 (그 기존 공장 인터페이스의 상단에 ... factorception) 공장 패턴 내에서 모든 것을 포장 수 :

public interface ICustomSchedulerFactory 
{ 
    Scheduler Create(); 
} 

public class CustomSchedulerFactory: ICustomSchedulerFactory 
{ 
    private readonly IContainer _container; 
    public CustomSchedulerFactory(IContainer container) 
    { 
     _container = container; 
    } 

    public Scheduler Create() 
    { 
     var scheduler = _container.GetInstance<ISchedulerFactory>().GetScheduler(); 
     scheduler.JobFactory = _container.GetInstance<IJobFactory>(); 
     return scheduler; 
    } 
} 

(또는 단순히 대신 컨테이너의 필요한 의존성을 주입) 및 단순히

ForSingletonOf<IScheduler>().Use(ctx => ctx.GetInstance<ICustomSchedulerFactory>().Create()); 
0

나는이 같은 것을 사용

 ForSingletonOf<IScheduler>().Use("A description",ctx => 
     { 
      var scheduler = ctx.GetInstance<ISchedulerFactory>().GetScheduler(); 
      scheduler.JobFactory = ctx.GetInstance<IJobFactory>(); 
      return scheduler; 
     });