14

चूंकि इंटरफ़ेस आरेख पर पहले से ही है, इसलिए मैं विरासत संदर्भ को स्पष्ट रूप से दिखाना चाहता हूं। लेकिन मैं कैसे नहीं मिल सकता है ...विजुअल स्टूडियो 2010/2012/2013, कक्षा आरेख: बेस क्लास के रूप में इंटरफ़ेस कैसे दिखाया जाए, न कि "लिलीपॉप" के रूप में?

enter image description here

+2

मुझे इसमें भी रूचि है, लेकिन [इस] से यह निर्णय ले रहा है (http://social.msdn.microsoft.com/Forums/da-DK/vsclassdesigner/thread/0866a2d5-ad19-4e5c-a05b-0912eb7f7a13) और अन्य धागे यह असंभव है। वीएस 2012 आरसी में भी! – ieaglle

+2

अभी भी वीएस 2013 में भी काम नहीं करता है! - "कक्षा और इंटरफ़ेस के बीच लाइनों को दिखाने के लिए समर्थन जोड़ना यह अत्यधिक अनुरोधित सुविधा है जो भविष्य के संस्करणों के लिए हमारी सूची के शीर्ष पर है" - 2005 में एमएस ने कहा :) - http://social.msdn.microsoft .com/मंच/en-US/0866a2d5-ad19-4e5c-a05b-0912eb7f7a13/दिखा इंटरफ़ेस-कार्यान्वयन? मंच = vsclassdesigner। –

+0

मुझे यह पसंद है कि आप पिछले 4 वर्षों में नए प्रश्न स्टूडियो संस्करणों को जोड़कर इस प्रश्न को संपादित कर रहे हैं। 2015 के बारे में क्या? कोई भाग्य वहाँ? –

उत्तर

7

वहाँ 2012 तक वी.एस. 2005 में एक बग है कि यह काम करने के लिए अनुमति नहीं दी जाएगी है। मेरे पास एक ऐसा काम है जो इंटरफेस के लिए विरासत को चित्रित करने में इसे चालित कर सकता है। कहें कि आपके इंटरफ़ेस को IMyInterface कहा जाता है। आपको इसे इंटरफ़ेस को लागू करने वाले एक अमूर्त वर्ग के साथ प्रतिस्थापित करना होगा और अपने इंटरफ़ेस के बजाय इसका उपयोग करना होगा। कोड सशर्त संकलन का उपयोग करेगा और इस तरह दिखेगा:

 
//to generate class diagram, add 'CLSDIAGRAM' to the conditional symbols on the Build tab, 
// or add '#define CLSDIAGRAM' at the top of this file 
#if CLSDIAGRAM 
#warning CLSDIAGRAM is defined and this build should be used only in the context of class diagram generation 
//rename your interface by adding _ 
public interface IMyInterface_ 
{ 
    int MyProperty { get; } 
    void MyMethod(); 
} 
//this class will act as an interface in the class diagram ;) 
public abstract class IMyInterface : IMyInterface_ // tricks other code into using the class instead 
{ 
//fake implementation 
    public int MyProperty { 
     get { throw new NotImplementedException(); } 
    } 

    public void MyMethod() 
    { 
     throw new NotImplementedException(); 
    } 
} 
#else 
// this is the original interface 
public interface IMyInterface { 
    int MyProperty { get; } 
    void MyMethod(); 
} 
#endif 

यह आपकी इच्छानुसार दिखने की संभावना है। आपके मामले में IMyInterface IMedicine बन जाएगा।

+0

आपके उत्तर के लिए धन्यवाद। मैं डिज़ाइन आरेखों को अधिक जानकारीपूर्ण बनाने के लिए विशेष रूप से कुछ अतिरिक्त कोड का उपयोग करता हूं, लेकिन सशर्त संकलन के साथ इसे एक साथ करना मेरे लिए कुछ नया है। –