Hayer Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 Hei! Kan jeg ha en DLL med funksjoner som forandre de globale variablene mine i programmet? Lenke til kommentar
j000rn Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 Nja, det er ikke anbefalt. Om du forklarer hva du egentlig er ute etter så kanskje vi kan komme med en mye mer fornuftig og enklere løsning. Lenke til kommentar
Manfred Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 Jeg synes det høres litt rart og risky ut, ja... Lenke til kommentar
HDSoftware Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 Jeg syntes ikek det hørtes noe rart ut i det hele tatt jeg. For eksempel: - En Login DLL som endrer de globale database orienterte variablene - ADB løsninger der f.eks. Faktura er en egen DLL som endrer forrige brukte fakturanr - Et spill som endrer en global verdi som forteller andre biter av spillet om hendelser etc. etc. etc Det jeg derimot synes er rart er heller - finnes det noen god grunn til å ha globale variabler i det hele tatt når parameter overføring er referanse basert? Lenke til kommentar
Hayer Skrevet 28. oktober 2007 Forfatter Del Skrevet 28. oktober 2007 @HDSoftware Vis du har en global array å skal søke etter 1 ting i arrayen? Så slepper du å kalle en funksjon i en while loop eller noe, bare Sjekker(navn as string) f.eks... Lenke til kommentar
GeirGrusom Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 (endret) Høres ut som om du er interresert i et plug-in system. Måten å gjøre dette på, er at du lager et interface som spesifiserer alle funksjoner som et plug-in modul må implementere. Deretter bruker du System.Reflection.Assembly til å laste dll-filen. Du kan f.eks. spesifisere at prosjektet har en Dictionary som inneholder programinstillinger, som dll-en kan endre. DLL (må legge til referanse til .exe filen) public SamplePlugin : IPlugin { public string Name { get { return "Sample Plugin"; } } public void InitLibrary(IProjectSettings project) { if(!project.ApplicationSettings.ContainsKey("LoadedPlugins")) project.ApplicationSettings.Add("LoadedPlugins", ""); project.ApplicationSettings["LoadedPlugins"] += this.Name + "\n"; } } // Her definerer vi interfaces som skal brukes i pluginen og programmet public interface IProjectSettings { public Dictionary<string, string> ApplicationSettings { get; } } public interface IPlugin { string Name { get; } void InitLibrary(IProjectSettings project); } public class ThisProject : IProjectSettings { private Dictionary<string, string> m_dict; // Inneholder prosjektinstillinger // Lister assemblies og plugin objekter private List<System.Reflection.Assembly> m_assemblies; private List<IPlugin> m_plugin_objects; public Dictionary<string, string> ApplicationSettings { get { return m_dict; } } public void LoadLibrary(string dllname) { // Last dll-filen System.Reflection.Assembly asm = System.Reflection.Assembly.Load(dllname); // Hent alle typer definert i dll-en Type[] types = asm.GetTypes(); foreach(Type t in types) { // Sjekk om object if(t.GetInterface("IPlugin") != null) { IPlugin plug = Activator.CreateInstance(t) as IPlugin; plug.InitLibrary(this as IProjectSettings); m_plugin_objects.Add(plug); } } m_assemblies.Add(asm); } } (utestet) edit: teit av meg å skrive C# i et VB forum.... Endret 28. oktober 2007 av GeirGrusom Lenke til kommentar
Hayer Skrevet 28. oktober 2007 Forfatter Del Skrevet 28. oktober 2007 :O Hvordan viste du at jeg drev med det GeirGrusom? *spooky* Lenke til kommentar
GeirGrusom Skrevet 28. oktober 2007 Del Skrevet 28. oktober 2007 Jeg har en klasse som heter LesHayersTanker : IMindReader, IEnumerable<ITanke> Lenke til kommentar
Hayer Skrevet 28. oktober 2007 Forfatter Del Skrevet 28. oktober 2007 (endret) Haha :!: Serriøst? Endret 28. oktober 2007 av Hayer Lenke til kommentar
Hayer Skrevet 29. oktober 2007 Forfatter Del Skrevet 29. oktober 2007 :!: :!: våkna 1time for tidlig, dro til skolen, åj-j.. tomt her ja.. dra hjem.. lese på forum, dagens..so far.. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå