private static void InjectDictionaryConverter(IJSValueConverterService service) { service.RegisterArrayConverter <string>(); service.RegisterProxyConverter <IDictionary <string, string> >( (binding, dict, node) => { DictionaryWrapper wrapper = new DictionaryWrapper(dict); binding.SetFunction <IEnumerable <string> >("GetKeys", wrapper.GetKeys); binding.SetMethod <string, string>("SetItem", wrapper.SetItem); binding.SetFunction <string, string>("GetItem", wrapper.GetItem); binding.SetFunction <string, bool>("ContainsKey", wrapper.ContainsKey); } ); }
private void registerBasicTypes(IJSValueConverterService converter) { converter.RegisterStructConverter <PointF>( (jsvalue, value) => { jsvalue.WriteProperty("X", value.X); jsvalue.WriteProperty("Y", value.Y); }, (jsvalue) => { return(new PointF( jsvalue.ReadProperty <float>("X") , jsvalue.ReadProperty <float>("Y"))); }); converter.RegisterStructConverter <SizeF>( (jsvalue, value) => { jsvalue.WriteProperty("Width", value.Width); jsvalue.WriteProperty("Height", value.Height); }, (jsvalue) => { return(new SizeF( jsvalue.ReadProperty <float>("Width") , jsvalue.ReadProperty <float>("Height"))); }); converter.RegisterStructConverter <RectangleF>( (jsvalue, value) => { jsvalue.WriteProperty("X", value.X); jsvalue.WriteProperty("Y", value.Y); jsvalue.WriteProperty("Width", value.Width); jsvalue.WriteProperty("Height", value.Height); }, (jsvalue) => { return(new RectangleF( jsvalue.ReadProperty <float>("X") , jsvalue.ReadProperty <float>("Y") , jsvalue.ReadProperty <float>("Width") , jsvalue.ReadProperty <float>("Height"))); }); converter.RegisterArrayConverter <PointF>(); converter.RegisterConverter <BlendModeEnum>( (node, value) => { return(node.GetService <IContextSwitchService>().With(() => { return API.JavaScriptValue.FromInt32((int)value); })); }, (node, jsvalue) => { return(node.GetService <IContextSwitchService>().With(() => { return (BlendModeEnum)jsvalue.ToInt32(); })); } ); converter.RegisterStructConverter <Effect>( (jsvalue, value) => { jsvalue.WriteProperty <string>(nameof(value.Name), value.Name); jsvalue.WriteProperty <string>(nameof(value.ConfigJson), value.ConfigJson); }, (jsvalue) => { return(new Effect() { Name = jsvalue.ReadProperty <string>(nameof(Effect.Name)), ConfigJson = jsvalue.ReadProperty <string>(nameof(Effect.ConfigJson)) }); } ); }