delegate int TestMethodDelegate(int a, int b);
// 리소스에서 byte[] 로 DLL을 끌어 오고...
Assembly loadAssembly = Assembly.Load(WindowsFormsApplication1.Properties.Resources.ClassLibrary1);
// Case 1. 모듈로 로드해서, 델리게이트로 바인드(?)
Module[] modules = loadAssembly.GetModules();
Type tx = modules[0].GetType("ClassLibrary1.Class1");
MethodInfo minfo = tx.GetMethod("TestMethod", BindingFlags.Public | BindingFlags.Static);
TestMethodDelegate TestMethod = (TestMethodDelegate)Delegate.CreateDelegate(typeof(TestMethodDelegate), minfo);
int testresult = TestMethod(5, 6);
// Case 2. 로드한 모듈에서 직접 Invoke
object[] parameters = { 4, 6 };
int testresult2 = (int)minfo.Invoke(minfo, parameters);
// Case 3. 어셈블리 자체에서 인스턴스 생성해서 Invoke
object instanceObject = loadAssembly.CreateInstance("ClassLibrary1.Class1");
int testresult3 = (int)instanceObject.GetType().GetMethod("TestMethod").Invoke(instanceObject, parameters);
내가 기억을 하기 위한 메모...
근데, 좀 더 깔끔히 로드할 수 있는 방법은 없으려나 ?
그보다, 단순히 컴파일 옵션 정도로 exe 단일 파일에다가 dll을 짱박아 주는 옵션 없나 ? ;;;
리소스로 때려 넣는건, 좀 압박인데... 메모리도 두배일테고... 방식도 이건 가히 어부바 (...)







덧글
Harry 2009/10/13 02:00 # 답글
오랜만에 들려봅니다~왠지 전문적인 내용이네요 ㅎㅎㅎ :)
컴퓨터공학하시는 분들 보면 정말 신기합니다. 어떻게 저걸 이해하시는지.. =_= 저야 뭐 일반인의 한사람으로서 힘들이지않고 문명의 이기를 누릴수있는것에 감사하며 살고있지요
Sikuru 2009/10/13 07:57 #
아하하~ 별거 아닌데요~ ^^;;;잘 지내셨나요~ =)