मैं एक विस्तार विधि के साथ घटनाओं की परवरिश के बारे में कई पदों पाया है का उपयोग करके ईवेंट जोड़ें, फिर भी मेरे सवाल का एक सा अलग है:एक्सटेंशन तरीकों
मैं इस तरह एक अंतरफलक है:
public interface IStateMachine
{
void SetState(IState NewState);
IState GetState();
}
इस इंटरफ़ेस का उपयोग करना इस प्रकार की तरह मैं एक विस्तार विधि बना सकते हैं: एक statechange-event
:
public static void ChangeState(this IStateMachine StateMachine, IState NewState)
{
StateMachine.GetState().Exit();
StateMachine.SetState(NewState);
StateMachine.GetState().Enter();
}
क्या मैं वास्तव में चाहते हैं कि वहाँ की घटनाओं निकाल दिया जा करने के लिए, उदाहरण के लिए जरूरत है कि हो जाएगा।
हालांकि मैं StatechangeEvent
IStateMachine
इंटरफ़ेस का हिस्सा बनना नहीं चाहता, लेकिन ऐसा लगता है कि यह एकमात्र तरीका है। मेरे पास कई कक्षाएं हैं जो IStateMachine
लागू करती हैं, और इसलिए मुझे हर बार एक ही कोड को फिर से करना होगा।
धन्यवाद, मैं इसे देख लूंगा। मेरे पास विभिन्न प्रकार के वर्ग हैं जो सभी एक IStateMachine हो सकते हैं। जब मैं आधार सारणी कक्षा बना रहा हूं तो मुझे कई विरासत में समस्याएं आ रही हैं। – avanwieringen
@avanwieringen: उस मामले में विस्तार विधियों के माध्यम से इंटरफ़ेस पर पब/सब लागू करना बेहतर विचार प्रतीत होता है। –