C # 응용 프로그램 내에서 런타임에 .dll을 가져오고 사용하는 방법을 알아 내려고 노력 중입니다. Assembly.LoadFile ()을 사용하여 내 프로그램이 dll을로드하도록 관리했습니다 (이 부분은 ToString ()으로 클래스 이름을 가져올 수 있으므로 확실히 작동합니다).하지만 '출력'을 사용할 수 없습니다. 내 콘솔 응용 프로그램 내부에서 메서드. .dll을 컴파일 한 다음 콘솔의 프로젝트로 옮깁니다. CreateInstance와 메서드를 사용할 수있는 사이에 추가 단계가 있습니까?
이것은 내 DLL의 클래스입니다.
namespace DLL
{
using System;
public class Class1
{
public void Output(string s)
{
Console.WriteLine(s);
}
}
}
여기에 DLL을로드하려는 응용 프로그램이 있습니다.
namespace ConsoleApplication1
{
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll");
foreach(Type type in DLL.GetExportedTypes())
{
var c = Activator.CreateInstance(type);
c.Output(@"Hello");
}
Console.ReadLine();
}
}
}