14

Dado que la interfaz ya está en el diagrama, me gustaría mostrar explícitamente la herencia de referencia. Pero no puedo encontrar la manera ...Visual Studio 2010/2012/2013, Diagrama de clase: cómo mostrar la interfaz como clase base, no como "lillypop"?

enter image description here

+2

También estoy interesado en esto, pero a juzgar por [esto] (http://social.msdn.microsoft.com/Forums/da-DK/vsclassdesigner/thread/0866a2d5-ad19-4e5c-a05b-0912eb7f7a13) y otros hilos es imposible. ¡Incluso en VS 2012 RC! – ieaglle

+2

¡Todavía no funciona incluso en VS 2013! - "Agregar soporte para mostrar las líneas entre una clase y la interfaz que implementa es una de las características altamente solicitadas que está en la parte superior de nuestra lista para las versiones futuras" - declaró MS en 2005 :) - http://social.msdn.microsoft .com/Forums/es-ES/0866a2d5-ad19-4e5c-a05b-0912eb7f7a13/showing-interface-implementation? forum = vsclassdesigner. –

+0

Me gusta que haya estado editando esta pregunta en los últimos 4 años agregando nuevas versiones de Visual Studio. ¿Qué hay de 2015? ¿Alguna suerte allí? –

Respuesta

7

Hay un error en VS 2005 hasta el 2012 que no permitirá que funcione. Tengo un trabajo que podría engañarlo para dibujar la herencia de las interfaces. Supongamos que su interfaz se llama IMyInterface. Tienes que reemplazarlo con una clase abstracta que implemente esa interfaz y usarla en lugar de tu interfaz. El código podría hacer uso de la compilación condicional y tendrá el siguiente aspecto:

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

que es probable que mostrarla como desee. En su caso, IMyInterface se convertirá en IMedicine.

+0

Gracias por su respuesta. Por supuesto, uso un código adicional especialmente para hacer que los diagramas de diseño sean más informativos, pero hacerlo junto con la compilación condicional es algo nuevo para mí. –

Cuestiones relacionadas