public void BindHandler( ref CrosswalkModule.BindHandlerContext context, out CrosswalkModule.ExecuteHandlerDelegate executeHandler) { lock (_handlers) { if (!_handlers.TryGetValue(context.Name, out executeHandler)) { CrosswalkModule.BindHandlerDelegate binder; lock (_binders) { if (!_binders.TryGetValue(context.ManagedType, out binder)) { var parts = context.ManagedType.Split(new[] { "," }, 2, StringSplitOptions.None); var assembly = Assembly.Load(parts[1]); var type = assembly.GetType(parts[0]); var instance = (IBinder)Activator.CreateInstance(type); binder = instance.Bind; _binders.Add(context.ManagedType, binder); } } binder(ref context, out executeHandler); _handlers.Add(context.Name, executeHandler); } } }
public void Bind( ref CrosswalkModule.BindHandlerContext binding, out CrosswalkModule.ExecuteHandlerDelegate executeHandler) { var app = AppBuilder.BuildConfiguration(binding.ScriptProcessor); var handler = new Handler(app); executeHandler = handler.Execute; }