2. Modeling Element Rules

2.1. Classes

  • Uses the standard UML 'Class'

  • Supports single inheritance only

2.1.1. Class Signature

  • Additional visibilities for class signatures are set when the tagged values below are 'true':

    1. internal

    2. sealed

2.1.2. Class Attributes

  • Additional visibilities for class attributes are set when the tagged values below are 'true':

    1. internal

    2. protected internal

    3. volatile

2.1.3. Class Operations

  • Additional visibilities for class operations are set when the tagged values below are 'true':

    1. internal

    2. protected internal

    3. override

    4. sealed

    5. extern

    6. virtual

Everything else will use the checked visibility radio buttons

2.2. Interface

  • Uses the standard UML 'Interface'

  • Supports single inheritance only

2.2.1. Interface Signature

  • Additional visibilities for interface signatures are set when the tagged value below is 'true':

    1. internal

2.2.2. Interface Members

  • All interface members implicitly have public access. It is a compile-time error for interface member declarations to include any modifiers. In particular, interface members cannot be declared with the modifiers abstract, public, protected, internal, private, virtual, override, or static.

Everything else will use the checked visibility radio buttons.

2.3. Structure

  • Uses the standard UML 'Class' with the << struct>> stereotype

  • Supports single inheritance only

2.3.1. Structure Signature

Additional visibilities for structure signatures are set when the tagged value below is 'true':

  • internal

Struct tapes are never abstract and are always implicitly sealed; therefore the 'abstract' and 'sealed' modifiers are not permitted in a struct declaration. Since inheritance isn't supported for structs, the declared accessibility of a struct member cannot be 'protected' or 'protected internal'.

2.3.2. Structure Members

Function members in a struct cannot be abstract or virtual, and the override modifier is allowed only to override methods inherited from the type System.ValueType. A struct may be passed by reference to a function member using a 'ref' or 'out' parameter.

Everything else will use the checked visibility radio buttons.

2.4. Enumeration

  • Uses the standard UML 'Class' with an << enum>> stereotype

  • By default, it generates an enum as type 'int'.

  • Enum does not participate in generalizations or specifications

  • Enum cannot have navigable opposite association ends, operations, or inner classifiers

  • Anything else will default to 'int'.

2.4.1. Enumeration Signature

Additional visibilities for enumeration signatures are set when the tagged value below is 'true':

  • internal

Everything else will use the checked visibility radio buttons.

2.5. Delegate

  • Uses the standard UML 'Class' with a << delegate>> stereotype

  • Delegate does not participate in generalizations or specifications

2.5.1. Delegate Signature

Additional visibilities for the delegate signatures are set when the tagged value below is 'true':

  • internal

Everything else will use the checked visibility radio buttons.

2.6. C# Event

C# events are supported with an operation that has the stereotype << event>>.

2.7. Operations

There are some translations on the return type of C# operations:

  • 'in/out' parameter direction will be translated to 'ref'

  • 'in' parameter direction will be translated to blank ( "")

  • 'out' will be translated to 'out'

  • 'root' will be translated to 'new'