2012-11-19 2 views
-1

리플렉션을 사용하여 만든 사용자 지정 어셈블리에 액세스하려고합니다. 특히 내가 만든 구조의 공개 목록에 액세스하려고합니다. (공휴일을 정의하는 Holiday 구조체의 목록입니다.) 나는 기본적인 것을 놓치고 있다고 확신하지만 IDE에서이 이상한 오류가 계속 발생합니다.Visual Studio 2010에서 내 형식 변수가 정의되지 않은 경우를 말합니다.

Dim f As New OpenFileDialog() With { ... } 

Dim rgAsm as Reflection.Assembly 
Dim rgType as Type 
Dim rgDLL as Object 

rgASM = Reflection.Assembly.LoadFile(f.Filename) 
rgType = rgAsm.GetType("rgReporting.rgReporting") 
rgDLL = Activator.CreateInstance(rgType) 

Dim holType As Type = modConf.rgAsm.GetType("rgReporting.PublicHolidays+Holiday") 

If holType Is Nothing Then MsgBox("no.") Else MsgBox("yes!") 

위 코드를 실행할 때 "예!"라는 메시지가 나타납니다. msgbox 내 타입이 GetType()에 의해 정의되었다는 것을 의미합니다. 그러나 다음 코드를 작성하려고 할 때 :

Dim blah as holType 

IDE에서 나에게 " 'holType'을 (를) 정의하지 않았습니다."라는 오류 메시지가 나타납니다.

끝에 각각에 대해 유형을 사용하려고하지만 동일한 오류가 발생합니다. 유형을 사용할 수있는 것으로 정의하는 데있어 기본적인 단계가 빠져 있다는 것을 알고 있지만 그것이 무엇인지를 찾을 수없는 것 같습니다.

답변

1

당신은 그렇게 할 수 없습니다. holType 유형의 변수를 정의하려면 정적으로 정의해야합니다. holType은 런타임 유형입니다.

holType의 인스턴스를 만들려면 당신은 쓸 수 있습니다 :

Dim blah = Activator.CreateInstance(holType); 
관련 문제