Einzelnen Beitrag anzeigen

Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Klasse aus Datei laden

  Alt 5. Mär 2006, 18:50
Schaue dir mal die Assembly Klasse an.
Vornehmlich die Methoden Load* und Get*Types
Hier mal ein kleines Beispiel, es ist nicht Delphi, aber ein Pascal dialekt, der nicht sooo unterschiedlich ist.

Das interface steht in der Echse:
Delphi-Quellcode:
ISample = public interface
  method DoSomething : String;
end;
Jetzt noch eine ClassLib anlegen(in Delphi->Package) und dort den Typen anlegen:
Delphi-Quellcode:
type
  Sample = public class(ISample)
  public
    method DoSomething : String;
  end;
  
implementation

method Sample.DoSomething : String;
begin
  result := 'Miep';
end;
Wenn die Echse eine simple consollen app ist reicht das:
Delphi-Quellcode:
begin
  var lib := &Assembly.LoadFrom('LoadTypeFromAssembly.Lib.dll');
  
  for loadedType : &Type in lib.GetExportedTypes() do
    if typeof(ISample).IsAssignableFrom(loadedType) then
    begin
      var instance := Activator.CreateInstance(loadedType, []) as ISample;
      Console.WriteLine(instance.DoSomething());
    end;
end;
edit: ups, Dachte war'n D.Net thread... op:
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat