Ejemplo n.º 1
0
        ConversionSuite(IEnumerable <MethodInfo> methods)
            : this(String.Empty)
        {
            var keys = new MutableSet <long>();

            foreach (var m in methods)
            {
                var key = ConversionKey.FromMethod(m);
                if (keys.Contains(key))
                {
                    throw new Exception(
                              $"The method {m.Name}:{m.GetParameters().Single().ParameterType.Name}=>{m.ReturnType.Name} duplicates another signature");
                }
                else
                {
                    keys.Add(key);
                }
            }

            projectors = seq(from m in methods
                             let parameters = m.GetParameters()
                                              where parameters.Length == 1
                                              let srcType                     = parameters.Last().ParameterType
                                                                      let key = ConversionKey.FromTypes(srcType, m.ReturnType).KeyValue
                                                                                select(key, converter(m)));

            ctxprojectors = seq(from m in methods
                                let parameters = m.GetParameters()
                                                 where parameters.Length == 2
                                                 let srcType                     = parameters.Last().ParameterType
                                                                         let key = ConversionKey.FromTypes(srcType, m.ReturnType).KeyValue
                                                                                   select(key, m.ToContextualConverter()));
        }
Ejemplo n.º 2
0
 public MutableSet(MutableSet <T> set)
     : base(set)
 {
 }