internal void AnyTranslator(IntPtr isolate, ISetValueToJs setValueApi, IntPtr holder, object obj) { if (obj == null) { setValueApi.SetNull(isolate, holder); } else { Type realType = obj.GetType(); if (realType == typeof(object)) { int typeId = typeRegister.GetTypeId(isolate, realType); int objectId = objectPool.FindOrAddObject(obj); setValueApi.SetObject(isolate, holder, typeId, new IntPtr(objectId)); } else { GetTranslateFunc(realType)(isolate, setValueApi, holder, obj); } } }
void LoadType(IntPtr isolate, IntPtr info, IntPtr self, int paramLen) { try { Type type = GetTypeFromJs(isolate, info, self, paramLen); if (type != null) { int typeId = TypeRegister.GetTypeId(isolate, type); PuertsDLL.ReturnClass(isolate, info, typeId); } } catch (Exception e) { PuertsDLL.ThrowException(isolate, "loadClass throw c# exception:" + e.Message + ",stack:" + e.StackTrace); } }
//use by BlittableCopy public int GetTypeId(Type type) { return(TypeRegister.GetTypeId(isolate, type)); }