2010-03-12 40 views
4

我正在UML类图上运行此代码,并且它工作得很好,但是当试图从Visual Studio中的PropertiesEditor为关系结束(FirstRole和SecondRole)应用构造型时,构造型组合无法加载,即使在代码似乎有适用于关联属性的适用定型。 除了IProperty之外,我应该在UML配置文件中的元类标签中放置什么?如何在UML关系的MemberEnds上应用构造型?

<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

我张贴了这个问题Skinner's Blog,我得到了这样的回答:

“不幸的是,这是在我们的代码中的错误。”

解决方案应随Visual Studio 2010 SP1一起提供。

+1

但它没有:-( 在SP1中没有修复。 – 2011-11-28 14:18:31