The IHideObjectMembers
trick (a.k.a IFluentInterface
) का उपयोग किया जा सकता है उदा। IntelliSense के System.Object
सदस्यों को छिपाने के लिए धाराप्रवाह इंटरफेस कार्यान्वयन में। (आप इस चाल को नहीं जानते हैं, तो आप उस पर ऊपर के लिंक के माध्यम से पढ़ सकते हैं, मैं बस यहाँ इंटरफेस के सामान्य घोषणा दोहरा रहा हूँ :)वीएस इंटेलिसेन्स - IFluentInterface/IHideObjectMembers चाल काम नहीं करता है। क्यूं कर?
using System;
using System.ComponentModel;
[EditorBrowsable(EditorBrowsableState.Never)]
public interface IHideObjectMembers
{
[EditorBrowsable(EditorBrowsableState.Never)] bool Equals(object obj);
[EditorBrowsable(EditorBrowsableState.Never)] int GetHashCode();
[EditorBrowsable(EditorBrowsableState.Never)] Type GetType();
[EditorBrowsable(EditorBrowsableState.Never)] string ToString();
}
मैं अब छिपाने में सक्षम होना चाहिए कर रहा हूँ एक अन्य प्रकार पर System.Object
सदस्यों इस प्रकार है:
public class SomeClass : IHideObjectMembers { ... }
या:
public interface ISomeInterface : IHideObjectMembers { ... }
मैं दोनों वी.एस. 2008 एक्सप्रेस और 2008 मानक में यह कोशिश की। हालांकि, इंटेलिसेन्स से कोई भी सदस्य छिपा नहीं है। मैंने विभिन्न परियोजनाओं में EditorBrowsableAttribute
का उपयोग किया है और यह हमेशा अच्छी तरह से काम करता है; हालांकि, यह इस विशेष परिदृश्य में काम नहीं करता है।
http://i48.tinypic.com/vhb4fq.jpg
तो चीज़ें अपेक्षित ढंग से काम किया था, मैं केवल SomeMethodTwo
विधि को देखा होगा।
क्या मुझे कुछ याद आ रही है?
पी.एस .: आप घोषणाओं और स्क्रीनशॉट से मेरे उदाहरण कोड अनुमान लगा सकते हैं। मेरे पास SomeMethodTwo
नामक एक डमी विधि के साथ SomeClass
है। बहुत आसान। मेरे पास नहीं इस कक्षा में चार System.Object
विधियों को दोबारा लागू किया गया है, क्योंकि यह आवश्यक नहीं होना चाहिए।
में सभी इंटरफेस के साथ ऐसा करने के बाद दृश्य स्टूडियो (2015, 2017) के हाल के संस्करणों में को संदर्भित करता है , 'IHideObjectMembers'/'IFluentInterface' को Roslyn बग द्वारा बेकार प्रदान किया जाता है; https://github.com/dotnet/roslyn/issues/4434 देखें। – stakx