我想按其類型區分IEnumerable
變量。我的代碼是這樣的:如何獲取Enumerable的類型?
if (type is IEnumerable)
{
var listGenericType = type.GetType().GetGenericTypeDefinition().Name;
listGenericType = listGenericType.Substring(0, listGenericType.IndexOf('`'));
if (listGenericType == "List") {
//do something
}
else if (listGenericType == "HashSet") {
//do something
}
}
當我使用type.GetType().GetGenericTypeDefinition().Name
,在listGenericType
就像是List`1
或HashSet`1
但我希望它像List
或HashSet
。因此,我用Substring
來解決這個問題!
反正有沒有後處理string
類型來處理這個問題?我的意思是類似於下面的代碼:
if (type is IEnumerable)
{
var listGenericType = type.GetType().GetGenericTypeDefinitionWithoutAnyNeedForPostProcessing();
if (listGenericType == "List") {
//do something
}
else if (listGenericType == "HashSet") {
//do something
}
}
https://msdn.microsoft.com/en-us/library/system.type.getgenerictypedefinition.aspx –