(Real-Life Example: Dynamic GPS Packet Parser Delegate)”**
C# में Delegates सबसे शक्तिशाली features में से एक हैं।
Delegate आपको यह क्षमता देते हैं कि:
“एक method को भी variable की तरह pass करो, store करो, और change करो।”
अगर OOP को समझना आसान है,
तो delegates actual power लाते हैं—
और आपके GPS Server में delegates बहुत काम आते हैं:
Dynamic packet parser
Command handler
Notification callbacks
Device-specific logic switch
Background task callbacks
आज delegates को real-life + GPS use-case के साथ पूरी clarity में समझेंगे।
Delegate =
Method का pointer (यानी reference)
जिससे आप method को variable की तरह इस्तेमाल कर सकते हो।
Real-life example:
YouTube पर आप channel link share करते हो
Link open → वही channel open होता है
Delegate = method का link
public delegate void MyHandler(string msg);
void PrintMessage(string msg)
{
Console.WriteLine(msg);
}
MyHandler h = PrintMessage;
h("Hello C#!");
Delegate ने method को call कर दिया।
✔ Method को argument की तरह pass कर सकते हो
✔ Different logics choose dynamically
✔ Events delegates पर ही based हैं
✔ High-level flexibility
✔ Strategy pattern implement करना आसान
GPS server में यह बहुत काम आता है।
आप जानते हो कि हर GPS device (G17, S15, A20…) का packet format अलग होता है।
आप चाहो तो हर device के लिए dynamic parser assign कर सकते हो।
public delegate void PacketParser(string packet);
अब यह delegate किसी भी parsing method को hold कर सकता है।
void ParseG17(string packet)
{
Console.WriteLine("Parsed G17 packet");
}
void ParseS15(string packet)
{
Console.WriteLine("Parsed S15 packet");
}
PacketParser parser;
string deviceType = "G17"; // assume from IMEI
if (deviceType == "G17")
parser = ParseG17;
else
parser = ParseS15;
parser(packet); // run dynamic parser
एक ही line में dynamic logic switch।
यही “delegate magic” है।
public delegate void CommandHandler(string imei, string cmd);
void HandleReboot(string imei, string cmd) { }
void HandleGetLocation(string imei, string cmd) { }
void HandleStopEngine(string imei, string cmd) { }
CommandHandler handler;
switch (cmd)
{
case "REBOOT": handler = HandleReboot; break;
case "LOC": handler = HandleGetLocation; break;
case "STOP": handler = HandleStopEngine; break;
}
अब:
handler(imei, cmd);
Same handler variable → Different behaviors.
User connected → WebSocket send
User disconnected → alert
Location updated → push live map signal
All these can be delegates.
public delegate void NotifyHandler(GPSDevice d);
public NotifyHandler OnLocationUpdate;
Whenever location updates:
OnLocationUpdate?.Invoke(device);
Attack mode
Defend mode
Patrol mode
All assigned via delegates.
Old delegate syntax use नहीं करना चाहते?
C# ने 3 ready-made delegates दिए हैं:
Action<string> log = msg => Console.WriteLine(msg);
Func<int, int, int> add = (a, b) => a + b;
Predicate<int> isEven = n => n % 2 == 0;
इनसे आपका delegates code ultra clean होता है।
Delegates C# के सबसे flexible और powerful concepts में से एक हैं।
ये enable करते हैं:
✔ Dynamic logic
✔ Method switch
✔ Event system
✔ Packet parsing
✔ Command routing
✔ Notification callbacks
GPS server architecture में delegates backbone जैसा काम करते हैं—
जिससे आप multiple models, commands और events को extremely clean तरीके से handle कर पाते हो।
0 Comments
Thanks for Commenting on our blogs, we will revert back with answer of your query.
EmojiThanks & Regards
Sonu Yadav