VB.Net - как я могу получить тип объекта, содержащегося в списке - PullRequest
3 голосов
/ 12 августа 2010

Если у меня есть список ...

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 Ответ

3 голосов
/ 12 августа 2010

Есть хорошая статья по этому вопросу на MSDN, здесь

По сути, вы можете использовать GetGenericArguments (), чтобы получить массив типов, предоставляемых в качестве аргументов вашего универсального типа. В случае со списком есть только один аргумент, поэтому вы получите то, что вам нужно, например,

dim l as List(of MyClass) = new List(of MyClass)
dim t as Type = (l.GetGenericArguments())(0)
...