У меня есть фрагмент кода в проекте (MyProject), который содержит ранее связанный объект из сборки, на которую имеется ссылка (назовем ее CommonAssembly):
Dim myObject As CommonAssembly.MyEarlyBoundType
теперь у меня есть другая сборка, котораядинамически загружается, поскольку он присутствует не во всех проектах:
Dim myLateBoundObject As Object = AppDomain.CurrentDomain.CreateInstanceAndUnwrap("Utils", "Utils.MyLateBoundType")
MyLateBoundType является производным от CommonAssembly.MyEarlyBoundType, и я хочу привести myObject к myLateBoundObject, а затем программно вызвать дополнительные методы-члены с помощью отражения.Я бы подумал, что при извлечении типа myLateBoundOject и приведении myObject в myLateBoundObject это будет работать, но методы CType () и DirectCast () не будут принимать извлеченный тип, ссылаясь на «Ключевое слово не называет тип»ошибка:
myLateBoundObject = DirectCast(myObject, GetType(myLateBoundObject))
Я не совсем уверен, почему динамически загружаемый тип не может быть использован против метода DirectCast (почти уверен, что он не проверен на безопасность типов?), поскольку, если на Utils.MyLateBoundType была ссылка в MyPrjoect", Я мог бы выполнить:
myLateBoundObject = DirectCast(myObject, Utils.MyLateBoundType)
без проблем - но это не динамическое решение.
Есть предложения?
Приветствия,
Ням.