John Grove share a code at MSDN on how can we call DLLs methods dynamically using C# code.
The below code can further be modified and a developer can easily extend the functionality of his application to create a application which accepts DLLs as plug-ins. This concept is useful when different users have different requirements in a generalized application like in the case of famous photo editing program Photoshop from Adobe. Here anyone can create a plug-in and hook it up with the host application which further inherits all the functionalities from the DLL.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.LoadFrom(@"C:\Documents and Settings\john.grove\MyMath.dll");
Type mathUtility = assembly.GetType("MyMathUtilty");
Object theInstance = Activator.CreateInstance(mathUtility);
Int32 result = (Int32)mathUtility.InvokeMember("Add", BindingFlags.InvokeMethod, null, theInstance, new object[] { 56, 26 });
Console.WriteLine("Dynamically invoking MyMathUtilty Add method");
Console.WriteLine("56 + 26 = {0}", result);
Console.WriteLine("");
// get all public static methods of MyMathUtilty type
MethodInfo[] methodInfos = mathUtility.GetMethods(BindingFlags.Public | BindingFlags.Static);
Console.WriteLine("All public/static methods in MyMathUtilty");
Console.WriteLine("----------------------------------------");
for (Int32 i = 0; i < methodInfos.Count(); i++ )
Console.WriteLine("{0}.) {1}", i + 1, methodInfos[i].Name);
Console.ReadLine();
}
}
}
