[英]How to tell if ParameterInfo type is a collection?
有没有办法检查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);
但它不起作用。 有任何想法吗?
查看方法Type.IsAssignableFrom :
ConstructorInfo [] constructorInfos = typeof(T)。GetConstructors(); ConstructorInfo constructorInfo = constructorInfos [0]; ParameterInfo [] paramsVar = constructorInfo.GetParameters(); IEnumerable collectionParams = paramsVar.Where(x => x.ParameterType.GetElementType()。IsAssignableFrom(typeof(ICollection)));
很容易混淆a.IsAssignableFrom(b)
vs b.IsAssignableFrom(a)
!
@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
调用并切换了typeof(ICollection)
和x.ParameterType
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.