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



是否有方法检查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[] constructorInfos = typeof(T).GetConstructors();
ConstructorInfo constructorInfo = constructorInfos[0];
ParameterInfo[] paramsVar = constructorInfo.GetParameters();
IEnumerable<ParameterInfo> collectionParams = paramsVar.Where(
    x => typeof(ICollection).IsAssignableFrom(x.ParameterType));

(注意,我已经删除了GetElementType调用,并切换了typeof(ICollection)x.ParameterType

检查方法Type.IsAssignableFrom:

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

很容易混淆a.IsAssignableFrom(b)b.IsAssignableFrom(a)

@BartoszKP有正确的答案。

相关内容

  • 没有找到相关文章

最新更新