簡體   English   中英

如何判斷ParameterInfo類型是否為集合?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM