मैंने किसी अन्य धागे में चर्चा की, और पाया कि वर्ग विधियों को समान नाम और पैरामीटर के साथ विस्तार विधियों पर प्राथमिकता दी गई है। इस विस्तार के तरीकों के तरीकों का अपहरण नहीं होगा के रूप में अच्छा है, लेकिन यह मान आप किसी तृतीय पक्ष पुस्तकालय के लिए कुछ विस्तार तरीकों को शामिल किया है:वर्ग द्वारा ओवरराइड किए गए एक्सटेंशन विधियों को कोई चेतावनी नहीं देता
public class ThirdParty
{
}
public static class ThirdPartyExtensions
{
public static void MyMethod(this ThirdParty test)
{
Console.WriteLine("My extension method");
}
}
वर्क्स के रूप में उम्मीद: ThirdParty.MyMethod -> "मेरे विस्तार विधि"
लेकिन फिर तीसरे पक्ष के अपडेट यह पुस्तकालय है और वास्तव में अपने विस्तार विधि की तरह एक विधि कहते हैं:
public class ThirdParty
{
public void MyMethod()
{
Console.WriteLine("Third party method");
}
}
public static class ThirdPartyExtensions
{
public static void MyMethod(this ThirdParty test)
{
Console.WriteLine("My extension method");
}
}
ThirdPart.MyMethod -> "तृतीय पक्ष विधि"
अब अचानक कोड रनटाइम पर अलग व्यवहार करेगा क्योंकि तीसरे पक्ष की विधि ने आपकी विस्तार विधि को "अपहृत" कर दिया है! कंपाइलर कोई चेतावनी नहीं देता है।
क्या ऐसी चेतावनियां सक्षम करने का कोई तरीका है या अन्यथा इससे बचें?
मुझे इससे भी नफरत है .... :( – leppie