Avatar billede macpain Nybegynder
08. december 2004 - 04:14 Der er 2 kommentarer og
1 løsning

Brug af dynamisk loadning af dll

Jeg kan ikke ændre et indlæst objekt i en Arraylist:


Kunne forkortes men for læsbarheden så...

Assembly ass = null;
ass = Assembly.LoadFrom(FileName);
//Only one object is present
foreach (Type plugintype in ass.GetTypes())
{
  Type typeinterface = plugintype.GetInterface
  ("UML_Interface_Shape.IPluginShape", true);
  //Check to see if the interface exist
  if(typeinterface != null)
  {
    IPluginShape shape = (IPluginShape)Activator.CreateInstance
    (ass.GetType(plugintype.ToString()));
    MyAL.Add(shape);
  }
}

Dette går fint men her går det galt jeg kan ikke ændre mit objekt jeg hiver ud!!

Graphics g = drawPanel.CreateGraphics();
IPluginShape shape;
shape = (IPluginShape)Global.loader.MyAL[0];
Point p = new Point(20,20);
shape.PosStart = p;
shape.Draw(g);

Hvorfor kan jeg ikke ændre objektet, samt kalde min tegne rutine
Avatar billede arne_v Ekspert
08. december 2004 - 07:54 #1
Kan du præcisere "jeg kan ikke ændre mit objekt" lidt ?

compile fejl ? runtime fejl ? hvilken fejl ?
Avatar billede macpain Nybegynder
08. december 2004 - 10:07 #2
Selfølgelig!!

Mit objekt er en instans af et interface!!

Forstået på den måde at objektet er lavet fra en klsse der er nedarvet fra interfacet, således at det er udvidelse venligt.

IPluginShape er altså det interface der er nedarvey fra.

Men når jeg trækker objektet ud af arraylisten er det ikke muligt at ændre den, men hvis jeg alligevel prøver at gentegne, får jeg en GDI+ fejl
Avatar billede macpain Nybegynder
08. december 2004 - 10:56 #3
Arrhhhh damm, det var slet ikke i mit program buggen var det var i et tilhørende program hvor jeg hentede mit objekt!!!

Takker for tiden!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester