AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein .NET-Framework (managed code) C# Womit höchstmodulare WPF-Anwendungen erstellen?
Thema durchsuchen
Ansicht
Themen-Optionen

Womit höchstmodulare WPF-Anwendungen erstellen?

Ein Thema von Mithrandir · begonnen am 20. Mär 2011 · letzter Beitrag vom 28. Mär 2011
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.645 Beiträge
 
#1

AW: Womit höchstmodulare WPF-Anwendungen erstellen?

  Alt 21. Mär 2011, 07:39
Naja, ein paar Zeilen mehr sinds schon.

Erstmal alle Files die mit .dll enden laden:

Code:
foreach (var file in Directory.GetFiles(AppDomain.CurrentDomain.RelativeSearchPath, "*.dll"))
{
   try
   {
      Assembly.LoadFrom(file);
   }
   catch { } // fine here. Existing .dll could be a native library
}
Nun hast Du alle Assemblies verfügbar und kannst daraus alle Typen ermitteln, die Du benötigst. Dazu gibts ne kleine Helfermethode:

Code:
private static List<Type> FindTypes<T>()
{
  return AppDomain.CurrentDomain.GetAssemblies()
    .Select(a => a.GetTypes())
        .SelectMany(a =>
          a.Where(t => t.IsClass && !t.IsAbstract && typeof(T).IsAssignableFrom(t)))    
    .ToList();
}
Sagen wir Du hast ein Interface namens IMyPlugin und das definiert ne Methode Load() dem Du Deinen Plugin-Host übergibtst, dann initialisierst Du alle Plugins so:

Code:
foreach (var pluginType in FindTypes<IMyPlugin>())
{
    IMyPlugin instance = (IMyInterface) Activator.CreateInstance(pluginType);
    instance.Load(this); // oder whatever halt  
}
In load können die sich dann in ne List<IMyPlugin> auf dem Host legen oder Du merkst Sie Dir irgendwie anders.

Wenn Du nicht gleich alle instanzieren willst kannst Du natürlich auch einfach die Typen aus der Liste anzeigen und nur einzelne instanzieren. Mittels Custom Attributen kannst Du auch noch weitere Informationen zu den Plugins ausgeben etc. .NET ist da ziemlich mächtig *g*
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org

Geändert von Phoenix (21. Mär 2011 um 07:40 Uhr) Grund: Cast vergessen beim instanzieren...
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#2

AW: Womit höchstmodulare WPF-Anwendungen erstellen?

  Alt 21. Mär 2011, 14:05
Hm... Ich bin grad über Prism gestolpert - klingt eigentlich auch interessant...

//Edit: Ach... Danke fürs Beispiel...
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell

Geändert von Mithrandir (21. Mär 2011 um 14:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.055 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Womit höchstmodulare WPF-Anwendungen erstellen?

  Alt 25. Mär 2011, 00:08
Was mir in dem Zusammenhang noch einfällt, wäre Caliburn Micro.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Womit höchstmodulare WPF-Anwendungen erstellen?

  Alt 25. Mär 2011, 13:57
Also mein erster Tipp wäre auch Prism gewesen. Der zweite Caliburn.Micro mit MEF.
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#5

AW: Womit höchstmodulare WPF-Anwendungen erstellen?

  Alt 28. Mär 2011, 20:14
Danke euch - auch wenn ich noch ein wenig Schlucke, was die Lernkurve von Prism angeht.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 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-2025 by Thomas Breitkreuz