Controls [vb.net] 동적 DLL 폼 (Control) 불러오기 및 클래스 (Class) 함수 불러오기 예제
페이지 정보
본문
Imports System.IO
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SRA As System.Reflection.Assembly
Dim FATabStrip As Object = Nothing
Dim FATabStripItem As Object = Nothing
Dim Class1 As Object = Nothing
Dim mt As System.Reflection.MethodInfo = Nothing
SRA = System.Reflection.Assembly.LoadFile(Path.Combine(Application.StartupPath, "TabStrip.dll"))
Dim Types() As Type = SRA.GetExportedTypes()
For Each T As Type In Types
Select Case T.Name
Case "FATabStrip"
FATabStrip = Activator.CreateInstance(T)
Case "FATabStripItem"
FATabStripItem = Activator.CreateInstance(T)
Case "Class1" '// 동적 함수
Class1 = Activator.CreateInstance(T)
mt = T.GetMethod("Sum")
End Select
Next
FATabStripItem.ResumeLayout(False)
FATabStripItem.Title = "test"
FATabStrip.Items.Add(FATabStripItem)
FATabStrip.Dock = DockStyle.Fill
Me.Controls.Add(FATabStrip)
Dim vReturn As Object = mt.Invoke(Class1, New Object() {299, 300})
MsgBox(vReturn.ToString())
End Sub
End Class
부연설명:)
Imports System.Reflection |
으로 임포트해주세요!
Dim dllPath As String = DLL 경로 Dim a As Assembly = Assembly.LoadFile(dllPath) Dim t As Type = a.GetType("루트네임스페이스.클래스이름") Dim m As MethodInfo = t.GetMethod("함수이름") DIm 리턴값 As 리턴형식=DirectCast(m.Invoke(Nothing, New Object() {파라미터}), 리턴형식) |
이제 DLL을 만드셔야하는데요! 클래스형식으로 프로젝트를 만듭니다.
솔루션 탐색기에서 My Project를 들어가셔서 루트네임스페이스를 설정해주세요!
위쪽의 파라미터에는 일반함수쓸때처럼 쓰시면 됩니다. (예 :Nothing, New Object(){Textbox1,Text,"String",134},String)
나와서 클래스이름을 설정해주시는데, 소스에서 최상단의
Public Class 클래스이름
"클래스이름"을 설정해주세요!
함수이름은
Public Shared Function 함수이름(파라미터)
End Function
이렇게 해주심 됩니다!
예 : DLL파일
Public Class Class1
Public Shared Function Test(a As String, b As Integer)
MsgBox(a + b.ToString)
Return "테스트"
End Function
End Class
실행파일
Dim dllPath As String = "DLL.DLL" Dim a As Assembly = Assembly.LoadFile(dllPath) Dim t As Type = a.GetType("루트네임스페이스.Class1") Dim m As MethodInfo = t.GetMethod("Test") DIm 리턴값 As String=DirectCast(m.Invoke(Nothing, New Object() {"문자열",1234}), String) |
이렇게 됩니다!
- 이전글[vb.net] 필요한 경우에만 권한을 높이는 방법 / 필요한 경우에만 관리자 권한으로 실행 22.10.19
- 다음글[vb.net] WinHttp를 이용한 네이버 블로그 이미지 업로드(Uploading Naver Blog Image Using WinHttp) 22.10.12
댓글목록
등록된 댓글이 없습니다.