internal ListParameterExtractor(TypeCaster caster, Type type, Parameter param, Description description) : base(caster, type, param, description) { }
private static ParameterExtractor ParameterExtractor(Type type, Parameter parameter, Description description) { if (type is ParameterizedType) { ParameterizedType paramType = ( ParameterizedType )type; Type raw = ( Type )paramType.RawType; Type componentType = paramType.ActualTypeArguments[0]; Type component = null; if (componentType is Type) { component = ( Type )componentType; } if (typeof(ISet <object>) == raw) { TypeCaster caster = _types[component]; if (caster != null) { return(new ListParameterExtractorAnonymousInnerClass(caster, component, parameter, description)); } } else if (typeof(System.Collections.IList) == raw || typeof(System.Collections.ICollection) == raw || typeof(System.Collections.IEnumerable) == raw) { TypeCaster caster = _types[component]; if (caster != null) { return(new ListParameterExtractorAnonymousInnerClass2(caster, component, parameter, description)); } } } else if (type is Type) { Type raw = ( Type )type; if (raw.IsArray) { TypeCaster caster = _types[raw.GetElementType()]; if (caster != null) { return(new ListParameterExtractorAnonymousInnerClass3(caster, raw.GetElementType(), parameter, description)); } } else { TypeCaster caster = _types[raw]; if (caster != null) { return(new ParameterExtractor(caster, raw, parameter, description)); } } } else if (type is GenericArrayType) { GenericArrayType array = ( GenericArrayType )type; Type component = array.GenericComponentType; if (component is Type) { TypeCaster caster = _types[component]; if (caster != null) { return(new ListParameterExtractorAnonymousInnerClass4(caster, parameter, description)); } } } throw new System.InvalidOperationException("Unsupported parameter type: " + type); }