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())); }
public MutableSet(MutableSet <T> set) : base(set) { }