VB.Net - как я могу получить тип объекта, содержащегося в списке
Если у меня есть список...
dim l as List(of MyClass) = new List(of MyClass)
И я хочу получить тип объектов, содержащихся в списке, как это сделать?
Очевидным ответом, который кажется невозможным из моей реальной реализации, было бы сделать что-то вроде этого...public function GetType(byval AList as IList(of GenericType)) as System.Type
dim lResult as system.type = nothing
if AList.Count > 0 then lResult = AList(0).GetType
return lResult
end function
Но что делать, если список пуст и я все еще хочу знать тип, который он содержит?
1 ответ:
Есть хорошая статья об этом в MSDN, здесь
В основном вы можете использовать GetGenericArguments (), чтобы получить массив типов, предоставленных в качестве аргументов для вашего универсального типа. В случае со списком есть только один аргумент, поэтому вы получите то, что вам нужно, используя eg
dim l as List(of MyClass) = new List(of MyClass) dim t as Type = (l.GetGenericArguments())(0)