C#, DLL 동적 로드, 반사, 매개 변수, 메서드, 윈도우 호출

2137 단어
.net에서는 DLL을 동적 불러오는 데 자주 사용되는데, DLL에는 각종 매개 변수, 방법, 창이 포함될 수 있습니다. 어떻게 동적 불러오는 매개 변수, 방법, 창을 호출합니까?
 
C#에서 반사를 사용하려면 먼저 다음 네임스페이스의 클래스 관계를 파악해야 합니다.
System.Reflection 네임스페이스
(1) AppDomain: 응용 프로그램 필드, 프로그램 집합의 논리 용기로 이해할 수 있음
(2) Assembly: 프로그램 세트 클래스
(3) Module: 모듈 클래스
(4) Type: 유형 정보를 반사하는 가장 핵심적인 클래스를 사용
그들 사이는 일종의 종속 관계이다. 즉, 하나의 App Domain은 N 개의 Assembly를 포함할 수 있고, 하나의 Assembly는 N 개의 모듈을 포함할 수 있으며, 하나의 모듈은 N 개의 Type를 포함할 수 있다.
 
프로그램에서 프로그램 집합을 동적으로 불러오려면 다음과 같은 방법으로 사용할 수 있습니다. 그것은 Load, LoadFrom, LoadFile, LoadWithPartialName 방법입니다.
그중에서 다음과 같은 Assembly를 중점적으로 설명한다.LoadFile 및 Assembly.LoadFrom의 차이점
1、Assembly.LoadFile은 Assembly와 같은 적절한 dll 파일만 로드합니다.LoadFile("abc.dll") 은 abc를 로드합니다.만약 abc.dll에서 def를 인용했습니다.dll면,def.dll은 로드되지 않습니다.
Assembly.LoadFrom은 다르기 때문에 dll 파일과 인용된 다른 dll을 불러옵니다. 예를 들어 위의 예, def.dll도 로드됩니다.
2、Assembly로요.LoadFrom에서 Assembly를 불러올 때, abc와 같은 이름의 Assembly를 불러왔는지 확인합니다.dll에는 두 가지 버전이 있습니다. (버전 1은 디렉터리 1에 있고 버전 2는 디렉터리 2에 있습니다.) 프로그램은 처음에 버전 1을 불러왔습니다. Assembly를 사용할 때."LoadFrom(""2\abc.dll"")은 버전 2를 로드할 때 로드할 수 없으며 버전 1을 반환합니다."Assembly.LoadFile의 경우 이런 검사를 하지 않습니다. 예를 들어 위의 예를 Assembly로 바꾸십시오.LoadFile의 경우 버전 2가 올바르게 로드됩니다.
LoadFile: 지정된 경로에 있는 프로그램 세트 파일의 내용을 로드합니다.LoadFrom: 프로그램 세트의 파일 이름에 따라 프로그램 세트 파일의 내용을 로드합니다.
 
마지막으로 호출 방법.Assembly outerAsm = Assembly.LoadFrom( @"urPath\MyDLL.dll" );
DLL 클래스 호출 방법
Type type = outerAsm .GetType("MyDLL.MyClass");//호출 유형 MethodInfo method = type.GetMethod("MyVoid");//호출 방법
 
//전송 매개변수가 필요한 경우
object[] paramertors = new object[] { "3087", "2005"};//매개 변수 집합 object test = method.Invoke(null, paramertors);//Invoke 호출 방법
DLL에서 창 호출Type outerForm = outerAsm.GetType( "MyForm" false );// (Activator.CreateInstance(outerForm)  as   Form).Show();// ,
전재 대상:https://www.cnblogs.com/mumupudding/p/4607400.html

좋은 웹페이지 즐겨찾기