public IJSCSGlue Map(object from, object additional = null) { if (from == null) { return(new JSBasicObject(null)); } var res = _Cacher.GetCached(from); if (res != null) { return(res); } var command = from as ICommand; if (command != null) { return(_CommandFactory.Build(command)); } var simpleCommand = from as ISimpleCommand; if (simpleCommand != null) { return(_CommandFactory.Build(simpleCommand)); } var resultCommand = from as IResultCommand; if (resultCommand != null) { return(_CommandFactory.Build(resultCommand)); } var type = from.GetType(); if (_Context.IsTypeBasic(type)) { return(new JSBasicObject(from)); } if (type.IsEnum) { var trueres = new JSBasicObject(from); _Cacher.Cache(from, trueres); return(trueres); } var ienfro = from as IEnumerable; if (ienfro != null) { return(Convert(ienfro)); } var propertyInfos = GetPropertyInfos(from).Concat(GetPropertyInfos(additional)).ToList(); var gres = new JsGenericObject(from, propertyInfos.Count); _Cacher.Cache(from, gres); MappNested(gres, propertyInfos); return(gres); }
public IJSCSGlue InternalMap(object from, object iadditional = null) { if (from == null) { return(new JsGenericObject(_Context, null)); } var res = _Cacher.GetCached(from); if (res != null) { return(res); } var command = from as ICommand; if (command != null) { return(_CommandFactory.Build(command)); } var simpleCommand = from as ISimpleCommand; if (simpleCommand != null) { return(_CommandFactory.Build(simpleCommand)); } var resultCommand = from as IResultCommand; if (resultCommand != null) { return(_CommandFactory.Build(resultCommand)); } var type = from.GetType(); if (_Context.WebView.Factory.IsTypeBasic(type)) { return(new JSBasicObject(from)); } if (type.IsEnum) { var trueres = new JSBasicObject(from); _Cacher.Cache(from, trueres); return(trueres); } var ienfro = from as IEnumerable; if (ienfro != null) { return(Convert(ienfro)); } var gres = new JsGenericObject(_Context, from); _Cacher.Cache(from, gres); MappNested(from, gres); MappNested(iadditional, gres); return(gres); }
public IJSCSGlue Map(object from, object additional = null) { if (from == null) { return(_Null ?? (_Null = new JSBasicObject(null))); } var res = _Cacher.GetCached(from); if (res != null) { return(res); } var type = from.GetType(); if (_Context.IsTypeBasic(type)) { res = new JSBasicObject(from); _Cacher.CacheFromCSharpValue(from, res); return(res); } var command = from as ICommand; if (command != null) { return(_GlueFactory.Build(command)); } var simpleCommand = from as ISimpleCommand; if (simpleCommand != null) { return(_GlueFactory.Build(simpleCommand)); } var resultCommand = from as IResultCommand; if (resultCommand != null) { return(_GlueFactory.Build(resultCommand)); } if (type.IsEnum) { var trueres = new JSBasicObject(from); _Cacher.CacheFromCSharpValue(from, trueres); return(trueres); } var ienfro = from as IEnumerable; if (ienfro != null) { return(Convert(ienfro)); } var propertyInfos = @from.GetType().GetReadProperties(); var additionalPropertyInfos = additional?.GetType().GetReadProperties(); var gres = _GlueFactory.Build(from, propertyInfos.Count + (additionalPropertyInfos?.Count ?? 0)); _Cacher.CacheFromCSharpValue(from, gres); MappNested(gres, @from, propertyInfos); MappNested(gres, additional, additionalPropertyInfos); return(gres); }
public IJSCSGlue UnsafelMap(object from, object iadditional = null) { if (from == null) { return(JsGenericObject.CreateNull(_Context)); } var res = _Cacher.GetCached(from); if (res != null) { return(res); } var command = from as ICommand; if (command != null) { return(_CommandFactory.Build(command)); } var simpleCommand = from as ISimpleCommand; if (simpleCommand != null) { return(_CommandFactory.Build(simpleCommand)); } var resultCommand = from as IResultCommand; if (resultCommand != null) { return(_CommandFactory.Build(resultCommand)); } IJavascriptObject value; if (_Context.WebView.Factory.CreateBasic(from, out value)) { return(new JSBasicObject(value, from)); } if (from.GetType().IsEnum) { var trueres = new JSBasicObject(_Context.WebView.Factory.CreateEnum((Enum)from), from); _Cacher.CacheLocal(from, trueres); return(trueres); } var ienfro = from as IEnumerable; if (ienfro != null) { return(Convert(ienfro)); } var resobject = _Context.WebView.Factory.CreateObject(true); var gres = new JsGenericObject(_Context, resobject, from); _Cacher.Cache(from, gres); MappNested(from, resobject, gres); MappNested(iadditional, resobject, gres); return(gres); }