Опираясь на то, что написал Итоулсон:
Из MCTS: .net 2.0: Фонд разработки приложений
Сначала получите сборку:
Dim path As String =
"C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \"
+ _ "mscorlib.dll"
Dim theAssembly As Assembly =
Assembly.LoadFile (путь) Dim hashType
Как тип =
theAssembly.GetType ( "System.Collections.Hashtable")
Как только у вас есть тип, вы можете запросить его для объекта ConstructorInfo, чтобы использовать для создания
Ваш новый тип:
Dim argumentsTypes () As Type =
Type.EmptyTypes 'Пустой Конструктор
Dim ctor As ConstructorInfo =
hashType.GetConstructor (argumentTypes)
Метод, представленный в объекте ConstructorInfo, является специализированным объектом MethodBase
это выглядит и действует как типичный метод, но всегда возвращает экземпляр определенного
тип. В этом примере вы просите класс Type вернуть пустой конструктор.
(Вы предоставляете пустой массив типов для указания пустого конструктора.) Вы
может также попросить конструктор с конкретными аргументами, предоставив массив
типы аргументов конструктора, например:
Dim argumentsTypes () As Type = _ New
Type () {GetType (System.Int32)} 'One
аргумент типа Int32 Dim ctor As
ConstructorInfo =
hashType.GetConstructor (argumentTypes)
Когда у вас есть объект ConstructorInfo, создать объект так же просто, как вызвать
конструктор Вот как вызвать пустой конструктор:
Dim newHash as Object =
ctor.Invoke (New Object () {})
Как только у вас есть экземпляр объекта, вы просто используете отражение, чтобы получить информационный класс
вам нужно позвонить, а затем вызвать информационный класс для выполнения кода.
Например, вызовите метод Add в вашем новом экземпляре Hashtable:
Dim meth As MethodInfo = hashType.GetMethod ("Добавить")
meth.Invoke (newHash, New Object ()
{"Привет", "Привет"})
Теперь вы можете использовать класс PropertyInfo, чтобы получить количество элементов в вашем
Hashtable, чтобы проверить, что Add работал так, как вы ожидали:
Dim prop As PropertyInfo =
hashType.GetProperty ("Count")
Dim count As Integer =
CType (prop.GetValue (newHash,
Ничего), Integer)