Просто опираясь на ответ от Minitech. Если вы можете использовать C # 4.0, вы можете опустить некоторые вызовы отражения.
public static void Main()
{
Assembly ass = Assembly.LoadFile(@"PathToLibrar\ClassLibraryTest.dll");
var type = ass.GetType("ClassLibrary1.Calculator");
dynamic instance = Activator.CreateInstance(type);
int add = instance.Calc(1, 3);
}
Здесь как instance
типа dynamic
, вы ненадо найти метод Calc
по рефлексии.
Но лучший способ - это определить интерфейс вверх по потоку
public interface ICalculator
{
int Calc(int i, int b);
}
и реализовать его в своем классе вниз по течению
public class Calculator : ICalculator
{
public int Calc(int i, int b)
{
return i + b;
}
}
Тогда вы можете минимально отразить отражение для построенияобъект.
public static void Main()
{
Assembly ass = Assembly.LoadFile(@"PathToLibrar\ClassLibraryTest.dll");
var type = ass.GetType("ClassLibrary1.Calculator");
ICalculator instance = Activator.CreateInstance(type) as ICalculator;
int add = instance.Calc(1, 3);
}
Это даст вам наилучшую производительность.