Ejemplo n.º 1
0
 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);
        }
Ejemplo n.º 3
0
        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);
     }
 }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        public void AddPropertyGetterTranslator(Type declaringType, string methodName, IJavascriptMethodTranslator translator)
        {
            var property = declaringType.GetProperty(methodName);

            AddMethodTranslator(property.GetMethod, translator);
        }
Ejemplo n.º 7
0
 public JavascriptTranslator(IOptions <JavascriptTranslatorConfiguration> config, IViewModelSerializationMapper serializationMapper)
 {
     this.DefaultMethodTranslator = config.Value;
     this.mapper = serializationMapper;
 }
Ejemplo n.º 8
0
 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;
 }