This extension for StarUML(http://staruml.io) support to generate C# code from UML model and to reverse Java code to UML model. Install this extension from Extension Manager of StarUML. It 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.
 
Belows are the rules to convert from UML model elements to Java source codes.
- 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)
 
- 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.
 
- 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.- Documentation property to JavaDoc comment.
 
- 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.
Belows 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 decendants: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) correspond to the field type.
 - 
Field type to
end2.referenceproperty.T[](array) or its decendants: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).