J'essaie de comprendre comment on peut importer et utiliser une dll au moment de l'exécution dans une application C#. En utilisant Assembly.LoadFile(), j'ai réussi à faire en sorte que mon programme charge la dll (cette partie fonctionne sans aucun doute puisque je suis capable d'obtenir le nom de la classe avec ToString()), mais je suis incapable d'utiliser la méthode 'Output' à l'intérieur de mon application console. Je compile la dll, puis je la déplace dans le projet de ma console. Y a-t-il une étape supplémentaire entre CreateInstance et la possibilité d'utiliser les méthodes ?
C'est la classe dans ma DLL :
namespace DLL
{
using System;
public class Class1
{
public void Output(string s)
{
Console.WriteLine(s);
}
}
}
et voici l'application dans laquelle je veux charger la 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();
}
}
}