torsdag 18 februari 2010

Interface och dynamisk laddning av DLL

Blev lite nyfiken på hur Interface fungerar i C# och hur man skulle kunna ladda olika DLL-er dynamiskt.
Nyttan med det skulle kunna vara att man exempelvis kan göra en datadriven laddning av rätt DLL och kanske erbjuda kundanpassningar som enkelt ersätter standardmodulen. Det kan även användas till språkanpassade moduler eller liknande.

För att testa detta har jag gjort en lösning som innehåller fyra projekt:

  • Konsolapplikation för att testa hela lösningen
  • Ett library för alla (i detta fall endast ett) interface "ICalculations"
  • Ett library som ska föreställa en standardmodul som i implementerar ICalculations på ett standardsätt
  • Till sist ett library som implementerar en metod i ICalculations på ett annat sätt än standard "kundanpassning"
Interfacet ICalculations ser ut som följer.


Standardmodulen för ICalculations.

"Kundanpassad" implementering av ICalculations.


Konsolapplikationen för att testköra. Resultatet blir beroende av vilken DLL man väljer att ladda med Assembly.LoadFile(). Kan nog kanske bli användbart!


Källkoden finns upplagd på GitHub, InterfaceSandbox

Inga kommentarer:

Skicka en kommentar