Как применять стереотипы в членских отношениях UML Relationships? - PullRequest
4 голосов
/ 12 марта 2010

Я запускаю этот код на диаграмме классов UML, и он работает просто отлично, но при попытке применить стереотипы из PropertiesEditor в Visual Studio для завершения отношений (FirstRole и SecondRole), комбинация стереотипов не загружается, даже если в коде, кажется, применяются применимые стереотипы, действительные для свойств ассоциации. Что я должен добавить в тег метаклассов в профиле UML, кроме IProperty?

<metaclassMoniker name="/MyUmlProfile/Microsoft.VisualStudio.Uml.Classes.IProperty"/>

Это код:

using Microsoft.VisualStudio.Uml.Classes;

foreach( IShape shape in currentDiagram.GetSelectedShapes<IElement>() )
{
    IElement element = shape.GetElement();
    foreach( IStereotype stereotype in element.ApplicableStereotypes )
    {
        if( element is Microsoft.VisualStudio.Uml.Classes.IClass )
        {
            IClass classItem = (IClass)element;
            if( classItem.SuperClasses.Count() > 0 )
            {
                if( stereotype.Name == "SubclassAttribute" )
                {
                    element.ApplyStereotype( stereotype );
                }
            }
            else if( stereotype.Name == "ClassAttribute" )
            {
                element.ApplyStereotype( stereotype );
            }
        }
        else if( element is Microsoft.VisualStudio.Uml.Classes.IProperty )
        {
            IProperty property = (IProperty)element;
            if( property.Association != null )
            {
                if( stereotype.Name == "SetAttribute" &&
                    property.UpperValue != null && property.UpperValue.ToString() == "*" )
                {
                    element.ApplyStereotype( stereotype );
                }
                else if( stereotype.Name == "ManyToOneAttribute" &&
                    ( property.UpperValue == null || property.UpperValue.ToString() == "1" ) )
                {
                    element.ApplyStereotype( stereotype );
                }
            }
            else if( stereotype.Name == "PropertyAttribute" )
            {
                element.ApplyStereotype( stereotype );
            }
        }
    }
}

1 Ответ

1 голос
/ 22 апреля 2011

Я отправил этот вопрос в Блог Скиннера и получил ответ:

"К сожалению, это ошибка в нашем коде."

Решение должно поставляться с Visual Studio 2010 SP1.

...