This extension for StarUML supports C# code generation from a UML model. It also allows converting C# code into a UML model. Install this extension from Extension Manager of StarUML.
⚠️ This extension does not provide perfect reverse engineering, which is a test and temporal feature. If you need a complete reverse engineering feature, please check other professional reverse engineering tools.
✅ This extension is based on C# 2.0 specification.
- Click the menu (
Tools > C# > Generate Code...) - Select a base model (or package) that will be generated to C#.
- Select a folder where generated C# source files will be placed.
Below are the rules to convert UML model elements to C# source code.
- converted to C# namespace (as a folder).
- converted to C# Class. (as a separate
.csfile) visibilityto one of modifierspublic,protected,privateand none.isAbstractproperty toabstractmodifier.isFinalSpecializationandisLeafproperty tosealedmodifier.- Default constructor is generated.
- All contained types (UMLClass, UMLInterface, UMLEnumeration) are generated as inner type definition.
- Documentation property to C#Doc comment.
- Annotation Type is converted to C# attribute class, which extends System.Attribute and postfix of class is Attribute. (cf. class testAttribute:System.Attribute)
- If
stereotype=structthen converted to C# Struct.
- converted to C# Field.
visibilityproperty to one of modifierspublic,protected,privateand none.nameproperty to field identifier.typeproperty to field type.multiplicityproperty to array type.isStaticproperty tostaticmodifier.isLeafproperty tosealedmodifier.defaultValueproperty to initial value.- Documentation property to C#Doc comment.
- converted to C# Methods.
visibilityproperty to one of modifierspublic,protected,privateand none.nameproperty to method identifier.isAbstractproperty toabstractmodifier.isStaticproperty tostaticmodifier.- UMLParameter to C# Method Parameters.
- UMLParameter's name property to parameter identifier.
- UMLParameter's type property to type of parameter.
- UMLParameter with
direction=returnto return type of method. When no return parameter,voidis used. - UMLParameter with
isReadOnly=truetosealedmodifier of parameter. - Documentation property to C#Doc comment.
- If
stereotype=propertythen converted to C# Property. - With
isReadOnlyjust the getter is generated.
- converted to C# Interface. (as a separate
.csfile) visibilityproperty to one of modifierspublic,protected,privateand none.- Documentation property to C#Doc comment.
- converted to C# enum. (as a separate
.csfile) visibilityproperty to one of modifierspublic,protected,privateand none.- UMLEnumerationLiteral to literals of enum.
- converted to C# Field.
visibilityproperty to one of modifierspublic,protected,privateand none.nameproperty to field identifier.typeproperty to field type.- If
multiplicityis one of0..*,1..*,*, then collection type (List<>whenisOrdered=trueorHashSet<>) is used. defaultValueproperty to initial value.
- converted to C# Extends (
:). - Allowed only for UMLClass to UMLClass, and UMLInterface to UMLInterface.
- converted to C# Implements (
:). - Allowed only for UMLClass to UMLInterface.
- Click the menu (
Tools > C# > Reverse Code...) - Select a folder containing C# source files to be converted to UML model elements.
CsharpReversemodel will be created in the Project.
Below are the rules to convert from C# source code to UML model elements.
- converted to UMLPackage.
- converted to UMLClass.
- Class name to
nameproperty. - Type parameters to UMLTemplateParameter.
- Access modifier
public,protectedandprivatetovisibilityproperty. abstractmodifier toisAbstractproperty.sealedmodifier toisLeafproperty.- Constructors to UMLOperation with stereotype
<<constructor>>. - All contained types (UMLClass, UMLInterface, UMLEnumeration) are generated as inner type definition.
-
converted to UMLAttribute if "Use Association" is off in Preferences.
-
Field type to
typeproperty.- Primitive Types :
typeproperty has the primitive type name as string. T[](array) or its descendants:typeproperty refers toTwith multiplicity*.T(User-Defined Types) :typeproperty refers to theTtype.- Otherwise :
typeproperty has the type name as string.
- Primitive Types :
-
Access modifier
public,protectedandprivatetovisibilityproperty. -
staticmodifier toisStaticproperty. -
sealedmodifier toisLeafandisReadOnlyproperty. -
Initial value to
defaultValueproperty.
-
converted to (Directed) UMLAssociation if "Use Association" is on in Preferences and there is a UML type element (UMLClass, UMLInterface, or UMLEnumeration) that corresponds to the field type.
-
Field type to
end2.referenceproperty.T[](array) or its descendants:referenceproperty refers toTwith multiplicity*.T(User-Defined Types) :referenceproperty refers to theTtype.- Otherwise : converted to UMLAttribute, not UMLAssociation.
-
Access modifier
public,protectedandprivatetovisibilityproperty.
- converted to UMLOperation.
- Type parameters to UMLTemplateParameter.
- Access modifier
public,protectedandprivatetovisibilityproperty. staticmodifier toisStaticproperty.abstractmodifier toisAbstractproperty.sealedmodifier toisLeafproperty.
- converted to UMLInterface.
- Class name to
nameproperty. - Type parameters to UMLTemplateParameter.
- Access modifier
public,protectedandprivatetovisibilityproperty.
- converted to UMLEnumeration.
- Enum name to
nameproperty. - Type parameters to UMLTemplateParameter.
- Access modifier
public,protectedandprivatetovisibilityproperty. - Enum constants are converted to UMLEnumerationLiteral.
- converted to UMLClass with stereotype
<<annotationType>>. - Annotation type elements to UMLOperation. (Default value to a Tag with
name="default").
Licensed under the MIT license (see LICENSE file).