是否有方法检查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有正确的答案。