public static void AddMethodTranslator(MethodInfo method, IJsMethodTranslator translator) { MethodTranslators.Add(method, translator); if (method.DeclaringType.IsInterface) { Interfaces.Add(method.DeclaringType); } }
public static void AddMethodTranslator(Type declaringType, string methodName, IJsMethodTranslator translator, int parameterCount, bool allowMultipleMethods = false) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName) .Where(m => m.GetParameters().Length == parameterCount) .ToArray(); if (methods.Length > 1 && !allowMultipleMethods) throw new Exception("more then one methods"); foreach (var method in methods) { AddMethodTranslator(method, translator); } }
public static void AddMethodTranslator(Type declaringType, string methodName, IJsMethodTranslator translator, Type[] parameters = null) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName); if (parameters != null) { methods = methods.Where(m => { var mp = m.GetParameters(); return mp.Length == parameters.Length && parameters.Zip(mp, (specified, method) => method.ParameterType.IsAssignableFrom(specified)).All(t => t); }); } AddMethodTranslator(methods.Single(), translator); }
public static void AddPropertyGetterTranslator(Type declaringType, string methodName, IJsMethodTranslator translator) { var property = declaringType.GetProperty(methodName); AddMethodTranslator(property.GetMethod, translator); }
public static void AddMethodTranslator(MethodInfo method, IJsMethodTranslator translator) { MethodTranslators.Add(method, translator); if (method.DeclaringType.IsInterface) Interfaces.Add(method.DeclaringType); }
public static void AddMethodTranslator(Type declaringType, string methodName, IJsMethodTranslator translator, int parameterCount, bool allowMultipleMethods = false) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName) .Where(m => m.GetParameters().Length == parameterCount) .ToArray(); if (methods.Length > 1 && !allowMultipleMethods) { throw new Exception("more then one methods"); } foreach (var method in methods) { AddMethodTranslator(method, translator); } }
public static void AddMethodTranslator(Type declaringType, string methodName, IJsMethodTranslator translator, Type[] parameters = null) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName); if (parameters != null) { methods = methods.Where(m => { var mp = m.GetParameters(); return(mp.Length == parameters.Length && parameters.Zip(mp, (specified, method) => method.ParameterType.IsAssignableFrom(specified)).All(t => t)); }); } AddMethodTranslator(methods.Single(), translator); }