public static void ClearCache() { NamespaceWrapper.ClearCache(); TypeWrapper.ClearCache(); GenericWrapper.ClearCache(); DelegateWrapper.ClearCache(); InstanceMethodWrapper.ClearCache(); StaticMethodWrapper.ClearCache(); ConstructorWrapper.ClearCache(); }
public static StaticMethodWrapper Wrap(MethodInfo mi) { if (cache.ContainsKey(mi)) { return(cache[mi]); } var tw = new StaticMethodWrapper(mi); cache[mi] = tw; return(tw); }
public static JavaScriptValue WrapMethod(MethodInfo mi) { if (mi.IsStatic) { var c = StaticMethodWrapper.Wrap(mi); return(c.GetJavaScriptValue()); } else { var c = InstanceMethodWrapper.Wrap(mi); return(c.GetJavaScriptValue()); } }
void AssignMethodProc(JavaScriptValue setTo, MethodInfo[] methods) { var methodDic = new Dictionary <string, List <MethodInfo> >(); foreach (var m in methods) { if (m.IsSpecialName) { continue; } if (m.IsGenericMethodDefinition) { continue; } if (m.IsGenericMethod) { continue; } if (!methodDic.ContainsKey(m.Name)) { methodDic[m.Name] = new List <MethodInfo>(); } methodDic[m.Name].Add(m); } foreach (var methodName in methodDic.Keys) { var ms = methodDic[methodName]; if (ms.Count == 1) { var m = ms[0]; var smw = (m.IsStatic) ? (FunctionWrapper)StaticMethodWrapper.Wrap(m) : (FunctionWrapper)InstanceMethodWrapper.Wrap(m); setTo.SetIndexedProperty(JavaScriptValue.FromString(m.Name), smw.GetJavaScriptValue()); methodWrappers.Add(smw); } else { var os = new OverloadSelector(); foreach (var m in ms) { os.AppendMethod(m); } setTo.SetIndexedProperty(JavaScriptValue.FromString(os.GetName()), os.GetJavaScriptValue()); methodWrappers.Add(os); } } }