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

このシナリオでは、あなただけの単純な表現を使用することができているようです - =の右側にある(「文の本体」なしで波括弧を意味します)> ( "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; 
     }); 
関連する問題