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: