Я запускаю этот код на диаграмме классов UML, и он работает отлично, но при попытке применить стереотипы из PropertiesEditor в Visual Studio для завершения отношений (FirstRole и SecondRole), стереотипы combo не загружаются, даже если в кода, похоже, применимы стереотипы, действующие для свойств ассоциации. Что следует помещать в метаклассы в профиле UML, кроме IProperty?Как применять стереотипы в пользовательских именах UML-отношений?
<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);
}
}
}
}
Но это не так :-( В SP1 нет исправлений. –