Forums Neueste Beiträge
 

Fragen zum einfachen Ereignis

24/06/2010 - 19:33 von Alexander Richter | Report spam
Hallo,
ich habe ein Ereignis für die Klasse KlasseA erstellt:

public class KlasseA {
public delegate void BetragMax();
///<summary>Tritt ein, wenn der maximale Betrag erreicht wird.</summary>
public event BetragMax betragMax;

private void Addiere() {
//...
if (betragMax != null) betragMax();
}
}

In der Klasse KlasseB melde ich den Event.Handler an:

public class KlasseB {
public KlasseB() {
KlasseA test = new KlasseA();
test.betragMax *= new KlasseA.BetragMax(test_betragMax);
}

void test_betragMax() {
Console.WriteLine ("ausgelöst");
}
}

Alles funktioniert. Jetzt habe ich einige Fragen dazu:
1. Ist es üblich die Ereignisinstanz (betragMax) klein zu schreiben? Denn in
der KlasseB sehe ich in der Intellisense sehe ich dann den Ereignisname auch
kleingeschrieben.
2. In der Klasse KlasseB wird in der Intellisense jetzt betragMax (als
Ereignis) und der Ereignistyp (BetragMax) angezeigt.
Verwende ich private statt public für den Ereignistyp ( private delegate
void BetragMax(); ) erscheint die Fehlermeldung:
Inkonsistenter Zugriff: Feldtyp "KlasseA.BetragMax" ist weniger
zugreifbar als Feld "KlasseA.betragMax"
Ereignisinstanz muss aber public bleiben. Was muss ich àndern, damit in
der Intellisense nur das Ereignis sichtbar ist?
3. Wenn ich die Intellisense in Klasse KlasseB aufrufe (test.betragMax),
dann erscheint nicht wie sonst "EventHandler Control.Click Tritt ein beim
Klicken ..." sondern "KlasseA.BetragMax KlasseA.betragMax Tritt ein,
wenn ...". Was muss ich hier àndern, damit die Anzeige richtig erscheint?

Danke für Eure Hilfe.


Alexander
 

Lesen sie die antworten

#1 Frank Dzaebel
24/06/2010 - 19:57 | Warnen spam
Hallo Alexander,

1. Ist es üblich die Ereignisinstanz (betragMax) klein zu schreiben?
Denn in der KlasseB sehe ich in der Intellisense sehe ich dann den
Ereignisname auch kleingeschrieben.



Nein, verwende für öffentliche (public) Member die Pascal-Schreibweise:

[Konventionen für die Groß-/Kleinschreibung]
http://msdn.microsoft.com/de-de/lib...29043.aspx

[Namen von Typmembern]
http://msdn.microsoft.com/de-de/lib...29012.aspx



Frage 2. / 3. ...



Deine Klassen könnten zum Beispiel so aussehen:

public class KlasseA
{
public delegate void BetragMaxDelegate();

///<summary>Tritt ein, wenn der maximale Betrag erreicht wird.</summary>
public event BetragMaxDelegate BetragMax;

private void Addiere()
{
//...
if (BetragMax != null) BetragMax();
}
}

public class KlasseB
{
public KlasseB()
{
KlasseA test = new KlasseA();
test.BetragMax += Test_betragMax;
}

void Test_betragMax()
{
Console.WriteLine("ausgelöst");
}
}

//=0

BTW: Daß die Intellisense bei "+=" immer die klein geschriebene
Variante mit zusàtzlichem Handler vorschlàgt, ist im Prinzip
kein "glorreiches" Verhalten der IDE (Soll: zumindest PascalCase).
Tools wie ReSharper haben da aber schon Abhilfe geschaffen. Aber
auch eigene AddIns sind ja mit MEF recht einfach geworden.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen