예제 #1
0
 internal ListParameterExtractor(TypeCaster caster, Type type, Parameter param, Description description) : base(caster, type, param, description)
 {
 }
예제 #2
0
 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);
 }