Search code examples
c#icollectiongettypeparameterinfo

How to tell if ParameterInfo type is a collection?


Is there a way to check whether ParameterInfo is a Collection?

I have tried this:

ConstructorInfo[] constructorInfos = typeof(T).GetConstructors();
ConstructorInfo constructorInfo = constructorInfos[0];
ParameterInfo[] paramsVar = constructorInfo.GetParameters();
IEnumerable<ParameterInfo> collectionParams = paramsVar.Where(
    x => x.ParameterType.GetElementType() is ICollection);

but it does not work. Any ideas?


Solution

  • Try this:

    ConstructorInfo[] constructorInfos = typeof(T).GetConstructors();
    ConstructorInfo constructorInfo = constructorInfos[0];
    ParameterInfo[] paramsVar = constructorInfo.GetParameters();
    IEnumerable<ParameterInfo> collectionParams = paramsVar.Where(
        x => typeof(ICollection).IsAssignableFrom(x.ParameterType));
    

    (note that I've removed the GetElementType call and switched typeof(ICollection) and x.ParameterType)