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; }
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; }