Avatar billede curriculum Nybegynder
15. februar 2011 - 01:08 Der er 8 kommentarer og
1 løsning

Button event via reflection

Jeg har lavet en assembly, som jeg invoker fra et centralt system.
Nu er jeg igang med at lave en button event i assemblyen, men jeg får den ikke at eventhandleren at eksekvere metoden.
Al kode er lavet dynamisk.

Button btn = new Button();
btn.Text = "Create";
btn.Width = 150;
btn.Click += new EventHandler(Submit_Click);
ph.Controls.Add(btn);
...
public void Submit_Click(object sender, EventArgs e)
{
}

Har forsøgt med nogle delegates og public events men uden held.

Har noget løst dette problem før ?
Avatar billede Syska Mester
15. februar 2011 - 02:33 #1
Jeg forstår ikke helt hvad du skriver, det lader til du måske lige har skrevet det hurtgt nok, uden at læse det igennem.

Overstående kode burde virke ... men er ikke helt til at se i hvad sammenhænd ... og hvordan du kobler det hele sammen i dit system.

Går ud fra det er asp.net ... eller ?

Kan du måske give et bedre overblik hvordan det hele hænger sammen fra A til Z ?

Specielt hvordan du bruger din Assembly i dit "centrale system".

mvh
Avatar billede curriculum Nybegynder
16. februar 2011 - 22:46 #2
Det er lidt svært at forklare.

Ja, jeg bruger .Net 3.5.

Jeg har et cms system, hvor jeg tilføje assemblies (moduler) til kernesystemet.
Jeg har en core.dll, hvor der kører de basale system funktioner, f.eks. brugerstyring. Udover core.dll, så har jeg en anden assemly (kalender modul) calendar.dll, som jeg indlæser i mit kernesystem. I calendar.dll tilføjer jeg en button, som forklaret i de indledende spørgsmål. Når jeg klikker den knap, som stopper system uden nogen fejlmelding.

Jeg er klar over, at hvis jeg tilføjer target funktionen Submit_Click ind i core.dll, så ville den virke. Men jeg vil have modulet uafhængigt af core.dll.

Et vildt skud er, at det er en viewstate problem.
Avatar billede Syska Mester
16. februar 2011 - 22:53 #3
Ja, der vil jeg også kort mene det er ...

Kan du eventuelt lave et simpelt eksempel hvor det ikke virker med noget kode, så jeg kan sætte mig ind i hvordan du gør. Det kan komme til at virke på den ene eller anden måde. Det er nok mere et spm hvordan du gør det ... og hvad du måske mangler.

At lace plugable systemer er jo gjort i mange år ... :-)

mvh
Avatar billede curriculum Nybegynder
17. februar 2011 - 15:01 #4
Jeg debuggede systemet og det viste sig at være noget helt andet. Problemet var en stack overflow i et datetime cast som jeg havde lavet.

Så eventhandlers i dynamiske late-bound assemblies fungerer nøjagtig ens som handlers i early-bound.

Du må gerne sende mig et svar.
Avatar billede Syska Mester
17. februar 2011 - 15:25 #5
Svar.

Hvordan kan det være den ikke er kommet frem? Sluger du dine exceptions ?

Eventuelt kig på http://code.google.com/p/elmah/ ... det er uber cool.

mvh
Avatar billede curriculum Nybegynder
17. februar 2011 - 16:15 #6
Nej, det skulle de ikke blive.
Det må være noget med late-binding at den bare crasher. Jeg fik ihvertfald ingen exception på den overflow.

Alright, tak for linket. Vil næsten med sikkerhed bruge ELMAH :)
Avatar billede Syska Mester
17. februar 2011 - 16:21 #7
også kig på www.nuget.org

Har ikke brugt ELMAH så meget endnu, men tror jeg bliver glad for det. Efterhånden et projekt med mange år på bagen.

mvh
Avatar billede curriculum Nybegynder
17. februar 2011 - 16:42 #8
Nu har ikke opsat ELMAH endnu, men det vil jeg gøre så snart jeg har tid.
Nuget.org er ikke helt noget jeg vil bruge. Ved ikke helt hvad jeg skulle bruge den til..
Avatar billede Syska Mester
17. februar 2011 - 16:48 #9
Det var mere til information ... end at du skulle bruge det.

Jeg er ved at teste det og kommer alle 3 party open source dll's derind, så bliver det dejlig nemt.

Bare til info :-)

mvh
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

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



IT-JOB