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; 
     }); 

的錯誤:「與語句體lambda表達式不能轉換爲表達式樹」。

其實我需要一個使用IoC解決方案IJobFactory

回答

0

看來,在這種情況下,你只能使用簡單的表達式(沒有「語句的身體」 - 這意味着大括號)的=右邊> (「去」)運算符 - lambda表達式可能需要轉換爲表達式樹。

你可以換所有的工廠模式(在那些已經存在的工廠接口的頂部... 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; 
     });