Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


automatiskt ladda in från dll en menytext.

Postades av 2008-08-12 16:16:02 - Fredrik Malmström, i forum c# (c-sharp), Tråden har 4 Kommentarer och lästs av 815 personer

Satt och funderade lite grann här. Är inte så jätte välbevandrad inom applikationsprogrammering. Men skulle någon kunna förklara hur följande går till.


Programmet listar upp X-antal standardiserade menyval, om jag sedan säger att alla "add-ons" i form av dll-filer till programmet skall placeras i mappen AddOns. Sedan tänker jag att när jag kör igång programmet skall den per automatik känna av om en ny AddOn finns så att säga och visa ett menyval för denna. Säg att menyvalet är ex. en method i addon-dll:n som då givetvis implementerar något interface och ärver någon specfik klass egenskaper från "huvudprogrammet".

class MyAddOn {
    // show in menu. 
    public string Description()
    {
      return "Ett nytt menyval";
    }
}


Om ni har bra tips på vad man skall läsa på om och så, så är det väldigt tacksamt. (dvs. lite mer specifikt.) samt om det skulle funka med ASP.NET-applikationer också. :)


Svara

Sv: automatiskt ladda in från dll en menytext.

Postades av 2008-08-13 10:34:51 - Torkel Ödegaard

något i den här stilen kanske funkar:

foreach (var pluginFile in Directory.GetFiles("AddOns", "*.dll"))
{
    Assembly asm = Assembly.LoadFile(pluginFile);
    foreach (var type in asm.GetTypes())
    {
        if (typeof(IPlugin).IsAssignableFrom(type))
        {
            // do something fun with the plugin
        }
    }
}


Svara

Sv:automatiskt ladda in från dll en menytext.

Postades av 2008-08-13 10:55:37 - Fredrik Malmström

Jepps något åt det hållet var det jag var ute efter..

Hitta också en liten summering:

* skapa ett interface som används för att referera till en typ ex. IPlugin. (återfinns i en interop-dll)
* skapa en en klass som implementerar det definierade interfacet (IPlugin)
* i applikationen som skall ladda plugin dll:n lägg till en referens till interop-dll:n
* skapa kod som laddar in och initierar medlemmarna i pluginen.

Det är här din kodsnutt då förmodligen kommer in. Smått moddad:

List<IPlugin> plugins = new List<IPlugin>();

foreach(var pluginFile in Directory.GetFiles("AddOns",*.dll")) {
  Assembly ams = Assembly.LoadFile(pluginFile);
  foreach(var type in asm.GetTypes()) {
   if(typeof(IPlugin).IsAssignableFrom(type)) {
     IPlugin instance = Activator.CreateInstance(type);
     plugins.add(instance);
   }
  }


Då bör jag väl ha laddat in en instance av varje plugin i mappen AddOns. Då behöver jag väl i stort sett bara leka på.

Ex. på lek
foreach(IPlugin plugin In plugins) {
 Console.WriteLine(plugin.Pluginname); 
}


helt otestat.. bara lekt på i huvudet... men är tankesättet någorlunda korrekt?


Svara

Sv: automatiskt ladda in från dll en menytext.

Postades av 2008-08-13 23:18:32 - Simon Dahlbacka

I .NET 3.5 (eller var det 3.0) finns ju också System.AddIn namespacet, kan eventuellt vara värt att kolla upp. Inget jag använt själv ännu.

Här en random blogpost om vad det innebär:
http://msmvps.com/blogs/kathleen/archive/2008/01/14/system-addin-scenarios.aspx


Svara

Sv:automatiskt ladda in från dll en menytext.

Postades av 2008-08-14 09:24:51 - Fredrik Malmström

Det var inte dumt alls detta med System.AddIn

Hittade följande lilla videosnutt:
- http://www.microsoft.com/uk/msdn/screencasts/screencast/315/Managed-AddIn-Framework-Part-1.aspx

Titta!


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 707
27 958
271 751
1 067
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies