Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Klasse aus Datei laden (https://www.delphipraxis.net/64538-klasse-aus-datei-laden.html)

stefan2005 4. Mär 2006 23:14


Klasse aus Datei laden
 
hi,
ich möchte eine kleine flexible Spieleengine schreiben und habe mir dazu überlegt, eine Standardklasse für den Renderer zu erstellen, die die Funktionen und so vorgibt. Diese soll dann von einer anderen Klasse, die in einer anderen Datei liegt und die Funktionen für OpenGL oder DirectX bereitstellt, überladen werden.
Wie kann ich das am besten in .NET machen ?

mfg,
stefan

Elvis 5. Mär 2006 18:50

Re: Klasse aus Datei laden
 
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... :oop:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz