public void AddMethodTranslator(MethodInfo method, IJavascriptMethodTranslator translator) { MethodTranslators.Add(method, translator); if (method.DeclaringType.GetTypeInfo().IsInterface) { Interfaces.Add(method.DeclaringType); } }
public void AddMethodTranslator(Type declaringType, string methodName, IJavascriptMethodTranslator translator, int parameterCount, bool allowMultipleMethods = false) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName) .Where(m => m.GetParameters().Length == parameterCount) .ToArray(); AddMethodsCore(methods, translator, allowMultipleMethods); }
public void AddMethodTranslator(Type declaringType, string methodName, IJavascriptMethodTranslator translator, Type[] parameters = null, bool allowGeneric = true) { var methods = declaringType.GetMethods() .Where(m => m.Name == methodName && (allowGeneric || !m.IsGenericMethod)); 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); }
private void AddMethodsCore(MethodInfo[] methodsList, IJavascriptMethodTranslator translator, bool allowMultipleMethods) { if (methodsList.Length > 1 && !allowMultipleMethods) { throw new Exception("More then one method was found."); } if (methodsList.Length == 0) { throw new Exception("No methods found."); } foreach (var method in methodsList) { AddMethodTranslator(method, translator); } }
public void AddMethodTranslator(Type declaringType, string methodName, IJavascriptMethodTranslator 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 void AddPropertyGetterTranslator(Type declaringType, string methodName, IJavascriptMethodTranslator translator) { var property = declaringType.GetProperty(methodName); AddMethodTranslator(property.GetMethod, translator); }
public JavascriptTranslator(IOptions <JavascriptTranslatorConfiguration> config, IViewModelSerializationMapper serializationMapper) { this.DefaultMethodTranslator = config.Value; this.mapper = serializationMapper; }
public JavascriptTranslationVisitor(DataContextStack dataContext, IJavascriptMethodTranslator translator) { this.ContextMap = dataContext.EnumerableItems().Select((a, i) => (a, i)).ToDictionary(a => a.Item1, a => a.Item2); this.DataContext = dataContext; this.Translator = translator; }