protected virtual IScorableFactory <IResolver, object> MakeFactory(IDialogContext context, IActivity activity) { var cache = new DictionaryCache <ILuisService, Uri, LuisResult>(EqualityComparer <Uri> .Default); var serviceByModel = new Dictionary <ILuisModel, ILuisService>(); Func <ILuisModel, ILuisService> MakeLuisService = model => { ILuisService service; if (!serviceByModel.TryGetValue(model, out service)) { service = new CachingLuisService(MakeService(model), cache); serviceByModel.Add(model, service); } return(service); }; IScorableFactory <IResolver, object> factory = new OrderScorableFactory <IResolver, object> ( new LuisIntentScorableFactory(MakeLuisService), new RegexMatchScorableFactory(MakeRegex), new MethodScorableFactory() ); return(factory); }
protected virtual IScorableFactory <IResolver, object> MakeFactory(IDialogContext context, IActivity activity) { var comparer = MakeComparer(context, activity); IScorableFactory <IResolver, object> factory = new OrderScorableFactory <IResolver, object> ( this.OnStage, comparer, new LuisIntentScorableFactory(MakeService), new RegexMatchScorableFactory(MakeRegex), new MethodScorableFactory() ); return(factory); }