26. februar 2003 - 16:49Der er
11 kommentarer og 1 løsning
delegates i inherited klasse
Jeg har en public delegate StatusChange i en klasse A. Klasse B nedarver fra klasse A.
I klasse B skriver jeg foelgende:
if(this.StatusChange != null) this.StatusChange(this, new Helpers.TabPageStatusChangeEventArgs(Helpers.TabPageStatus.FETHINGFROMDB));
Idet jeg proever at kompilere, faar jeg fejl ved alle StatusChange(blaa streg):
C:\Documents and Settings\gooky\My Documents\Visual Studio Projects\Copy of Griffer\Forms\TabPages\TabPage1.cs(121): The event 'SpecificTabPages.TabPageCommon.StatusChange' can only appear on the left hand side of += or -= (except when used from within the type 'SpecificTabPages.TabPageCommon')
Er der nogle specielle regler med at man ikke kan 'arve' en delegate?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Jeg har loest det ved i min parent klasse at lave en FireStatusChange(object sender, Helpers.TabPageStatusChangeEventArgs e) { if(this.StatusChange != null) this.StatusChange(sender, e); }
Jeg syntes dog ikke at det er den bedste loesning eftersom jeg nu opretter en instans af:
Delegaten er allerede erklaeret saaledes: public delegate StatusChangeEventHandler(object sender, TabPageStatusChangeEventArgs e);
Eventet er allerede erklaeret saaledes:
public event StatusChangeEventHandler StatusChange;
ligesom i dit eksempel
jeg glemte at skrive at der ogsaa er fejl i linie 122. Har du proevet den kode som du skriver selv??? Jeg kan kun se at det er den samme som jeg selv har lavet. Men jeg tager maaske fejl...
Så er jeg lidt forvirret! Du starter med at skrive "Jeg har en public delegate StatusChange", men du mener altså at du har et public event StatusChange? Og hvis du har erklæret dit event i klassen a, så er det også i klassen a at du skal have:
Så kan du jo, fordi OnStatusChange er protected tilgå metoden fra dine nedarvede klasser og derved også fyre eventet. Du kan således ikke opnå noget ved at placer if sætningen i en nedarvet klasse som du ikke også opnår ved at have den i parent sætningen.
ok... det er ikke noget stoerrere, men formaalet var - med min if saetning - ikke at oprette en instans af Helpers.TabPageStatusChangeEventArgs hvilket man i dette tilfaelde bliver noedt til at goere :-( Men det gaar nok....
Synes godt om
Ny brugerNybegynder
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.