public class T1
{
public static void A()
{
Console.WriteLine("Test.Print");
}
public static void B()
{
Console.WriteLine("Test.PrintA");
}
public int Add(int a, int b)
{
return a + b;
}
public int Sum(int a, int b)
{
return a + b;
}
}
using System;
using System.Reflection;
using System.IO;
namespace LoadDLL
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
string path = Environment.CurrentDirectory+@"\Plug";
string[] fileNames = Directory.GetFiles(path, "*.dll");
if (fileNames.Length > 0)
{
for(int i = 0; i < fileNames.Length; i++)
{
Console.WriteLine(fileNames[i]);
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFile(fileNames[i]);
Type[] t = asm.GetExportedTypes();
foreach (Type type in t)
{
Console.WriteLine(type);
MethodInfo[] m = type.GetMethods();
MethodInfo pMtInfo = type.GetMethod("Sum");
object o = Activator.CreateInstance(type);
int sum = (int)pMtInfo.Invoke(o, new object[] { 100, 20});
Console.WriteLine(sum);
if (m.Length > 0)
{
foreach(var v in m)
{
Console.WriteLine(v.Name);
// type.InvokeMember(v.ToString(), BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, null, new object[] { });
}
}
//type.InvokeMember("A", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, null, new object[] { });
}
}
}
Console.ReadKey();
}
}
}