14

Poiché l'interfaccia è già sullo schema, vorrei mostrare esplicitamente il riferimento dell'ereditarietà. Ma non riesco a trovare il modo ...Visual Studio 2010/2012/2013, Class Diagram: come mostrare l'interfaccia come classe base, non come "lillypop"?

enter image description here

+2

Sono interessato anche a questo, ma a giudicare da [questo] (http://social.msdn.microsoft.com/Forums/da-DK/vsclassdesigner/thread/0866a2d5-ad19-4e5c-a05b-0912eb7f7a13) e altri thread è impossibile. Anche in VS 2012 RC! – ieaglle

+2

Ancora non funziona nemmeno in VS 2013! - "L'aggiunta di supporto per mostrare linee tra una classe e l'interfaccia che implementa è una delle funzionalità più richieste che è in cima alla nostra lista per le versioni future" - ha dichiarato MS nel 2005 :) - http://social.msdn.microsoft .com/Forum/it-IT/0866a2d5-ad19-4e5c-A05B-0912eb7f7a13/mostrando-interfaccia-implementazione? forum = vsclassdesigner. –

+0

Mi piace il fatto che tu abbia modificato questa domanda negli ultimi 4 anni aggiungendo nuove versioni di Visual Studio. Che dire del 2015? C'è fortuna lì? –

risposta

7

C'è un bug in VS 2005 fino al 2012, che non gli permetterà di lavorare. Ho un arround di lavoro che potrebbe ingannarlo nel disegnare l'ereditarietà per le interfacce. Supponiamo che la tua interfaccia sia chiamata IMyInterface. Devi sostituirlo con una classe astratta che implementa quell'interfaccia e la usa al posto della tua interfaccia. Il codice dovrebbe fare uso della compilazione condizionale e sarà simile a questa:

 
//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 

Questo è probabile che mostrano come si desidera. Nel tuo caso IMyInterface diventerà IMedicine.

+0

Grazie per la risposta. Io ovviamente uso un po 'di codice aggiuntivo appositamente per rendere i diagrammi di progettazione più istruttivi, ma farlo insieme alla compilazione condizionale è per me qualcosa di nuovo. –

Problemi correlati