C# 如何判断ParameterInfo类型是否为集合?

C# 如何判断ParameterInfo类型是否为集合?,c#,icollection,gettype,parameterinfo,C#,Icollection,Gettype,Parameterinfo,是否有方法检查ParameterInfo是否为集合 我试过这个: ConstructorInfo[] constructorInfos = typeof(T).GetConstructors(); ConstructorInfo constructorInfo = constructorInfos[0]; ParameterInfo[] paramsVar = constructorInfo.GetParameters(); IEnumerable<ParameterInfo> co

是否有方法检查ParameterInfo是否为集合

我试过这个:

ConstructorInfo[] constructorInfos = typeof(T).GetConstructors();
ConstructorInfo constructorInfo = constructorInfos[0];
ParameterInfo[] paramsVar = constructorInfo.GetParameters();
IEnumerable<ParameterInfo> collectionParams = paramsVar.Where(
    x => x.ParameterType.GetElementType() is ICollection);
但它不起作用。有什么想法吗?

查看方法:

ConstructorInfo[]ConstructorInfo=typeofT.GetConstructors; ConstructorInfo ConstructorInfo=ConstructorInfo[0]; ParameterInfo[]paramsVar=constructorInfo.GetParameters; IEnumerable collectionParams=paramsVar.Where x=>x.ParameterType.GetElementType.IsAssignableFromTypeOfCollection;

很容易混淆a.IsAssignableFromb和b.IsAssignableFroma

@BartoszKP拥有

检查方法:

ConstructorInfo[]ConstructorInfo=typeofT.GetConstructors; ConstructorInfo ConstructorInfo=ConstructorInfo[0]; ParameterInfo[]paramsVar=constructorInfo.GetParameters; IEnumerable collectionParams=paramsVar.Where x=>x.ParameterType.GetElementType.IsAssignableFromTypeOfCollection;

很容易混淆a.IsAssignableFromb和b.IsAssignableFroma

@BartoszKP拥有

尝试以下方法:

ConstructorInfo[] constructorInfos = typeof(T).GetConstructors();
ConstructorInfo constructorInfo = constructorInfos[0];
ParameterInfo[] paramsVar = constructorInfo.GetParameters();
IEnumerable<ParameterInfo> collectionParams = paramsVar.Where(
    x => typeof(ICollection).IsAssignableFrom(x.ParameterType));
请注意,我已删除GetElementType调用,并切换了TypeOfCollection和x.ParameterType。请尝试以下操作:

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

请注意,我已经删除了GetElementType调用,并切换了TypeOfCollection和x.ParameterType。。。我永远记不起a是从b到b的顺序。IsAssignableFroma@BartoszKP好了。。。我永远记不起a.IsAssignableFromb和b.IsAssignableFroma的顺序