Amikor meghatározom a saját eseményeimet, olyan mintát használok, mint például az alábbiak (amit úgy vélek az MSDN javasol csinálom):

public class MyEventClass { private bool _value; // Backing variable public bool Value { get { return _value; } set { if (value != _value) // Only raise event if value is changed/different { _value = value; OnValueChanged(EventArgs.Empty); } } } public event EventHandler ValueChanged; // Anything can subscribe to the event protected void OnValueChanged(EventArgs e) // Only this and children can invoke event { if (ValueChanged != null) ValueChanged(this, e); } } 

Így a kliens kódnak csak fel kell fizetnie az eseményre, és automatikusan működik.

Azonban nehézkesnek érzi a EventArgs e paraméter átadását, különösen egy olyan osztály esetében, amely az EventHandlert használja eseményeinek emeléséhez, mivel az alap EventArgs nem rendelkezik adatokkal, csak EventArgs.Empty.

Faux passznak tekinthető-e ennek megváltoztatása?

protected void OnValueChanged() { if (ValueChanged != null) ValueChanged(this, EventArgs.Empty); } 

Megjegyzések

  • Mit árt, ha ott vagy? Később vissza kell majd adnia, amikor úgy találja, hogy át kell adni az esemény argumentumait? Valószínűleg …
  • Csak arra gondoltam, hogy kényelmesen megspórolom magam némi erőfeszítéssel az óraírás közben. De ' teljesen igazad van abban, hogy később megváltozhat (valószínűleg nyert ' t, de mégis …), és ez egy áttörő változás lenne, ezért első alkalommal is jól tudom csinálni. Köszönöm!
  • Ebben a konkrét esetben nem ' normálisabb a PropertyChangedEventArgs és a -Handler, és argumentumként adja át a tulajdonság nevét? Vagy ez csak rossz példa?
  • Lehet, hogy a kódom rossz példa, de néhány .NET osztályból kihúztam a tervezési és elnevezési konvencióimat, amelyek az alapértelmezett EventArgs és -Changed nómenklatúrát használják.

Válasz

Rossz? Nem. Panaszkodni fog az emberekre a kódod miatt? Nem.

Ez egy elfoglalt fejlesztőtől pár percre eljut a nyomon, miközben megpróbálja kideríteni, hogy melyek a paraméterek, és segítenek-e megoldani a problémáját? Lehetséges ..

Megkönnyíti az osztály használatát …?

A szabványok és minták azért hasznosak, mert könnyen felismerhetők és használhatók (vagy figyelmen kívül hagyhatók). Az egyezményektől való eltérést célból kell végrehajtani, nemcsak azért, mert lehet. Ez vonatkozik akár zárójel stílusra, paraméternevekre vagy argumentumlistára. Tegye okkal, nemcsak azért, mert fordít.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük