Beispiel #1
0
 private static void RegisterMustashMethods()
 {
     MustashMethods = typeof(Faker).GetProperties()
                      .Where(p => p.IsDefined(typeof(RegisterMustasheMethodsAttribute), true))
                      .SelectMany(p =>
     {
         return(p.PropertyType.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)
                .Where(mi =>
         {
             if (mi.GetParameters().Length == 0 || mi.GetParameters().All(pi => pi.IsOptional))
             {
                 if (mi.GetGenericArguments().Length == 0)
                 {
                     return true;
                 }
             }
             return false;
         })
                .Select(mi =>
         {
             var mm = new MustashMethod
             {
                 Name = string.Format("{0}.{1}", DataSet.ResolveCategory(p.PropertyType), mi.Name).ToUpperInvariant(),
                 Method = mi,
                 OptionalArgs = Enumerable.Repeat(Type.Missing, mi.GetParameters().Length).ToArray()
             };
             return mm;
         }));
     }).ToDictionary(mm => mm.Name);
 }
Beispiel #2
0
 private static object[] ConvertStringArgumentsToObjects(string[] parameters, MustashMethod mm)
 {
     try
     {
         return(mm.Method.GetParameters()
                .Zip(parameters, GetValueForParameter)
                .ToArray());
     }
     catch (OverflowException ex)
     {
         throw new ArgumentOutOfRangeException($"One of the arguments for {mm.Name} is out of supported range. Argument list: {string.Join(",", parameters)}", ex);
     }
     catch (Exception ex) when(ex is InvalidCastException || ex is FormatException)
     {
         throw new ArgumentException($"One of the arguments for {mm.Name} cannot be converted to target type. Argument list: {string.Join(",", parameters)}", ex);
     }
     catch (Exception ex)
     {
         throw new ArgumentException($"Cannot parse arguments for {mm.Name}. Argument list: {string.Join(",", parameters)}", ex);
     }
 }
Beispiel #3
0
 public static void RegisterMustashMethods(Type type)
 {
     MustashMethods = type.GetProperties()
                      .Where(p => p.IsDefined(typeof(RegisterMustasheMethodsAttribute), true))
                      .SelectMany(p =>
     {
         return(p.PropertyType.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly)
                .Where(mi => mi.GetGenericArguments().Length == 0)
                .Select(mi =>
         {
             var mm = new MustashMethod
             {
                 Name = string.Format("{0}.{1}", DataSet.ResolveCategory(p.PropertyType), mi.Name).ToUpperInvariant(),
                 Method = mi,
                 OptionalArgs = mi.GetParameters().Where(pi => pi.IsOptional).Select(_ => Type.Missing).ToArray()
             };
             return mm;
         }));
     })
                      .ToLookup(mm => mm.Name);
 }