C#/Modelio equivalence
The constructors of a C# class are created using the «create» stereotype in Modelio.
Since the passing mode of the parameters in C# is through reference, all the parameters of an operation, except the return parameter, are of In/Out type.
Equivalence with C# primitive types
When you import an attribute or a parameter with a primitive C# type, equivalence is established with Modelio’s predefined types. Certain C# types require the addition of a tagged value.
| Primitive C# type | Type in the repository | Tagged value | 
|---|---|---|
bool  | 
boolean  | 
N/A  | 
char  | 
char  | 
N/A  | 
int  | 
integer  | 
N/A  | 
uint  | 
integer  | 
CsUnsignedInt  | 
short  | 
short  | 
N/A  | 
ushort  | 
short  | 
CsUnsignedShort  | 
long  | 
long  | 
N/A  | 
ulong  | 
long  | 
CsUnsignedLong  | 
sbyte  | 
byte  | 
CsSignedByte  | 
byte  | 
byte  | 
N/A  | 
float  | 
float  | 
N/A  | 
double  | 
double  | 
N/A  | 
decimal  | 
double  | 
CsDecimal  | 
Restrictions
When a type declaration cannot be expressed in Modelio, it is encapsulated in a {CsTypeExpr} tagged value, and the attribute, association or parameter type gets the "undefined" value.
This {CsTypeExpr} tagged value is not included in the signature of a method. Therefore, if an "m1" method is defined containing the only parameter which has a type that cannot be expressed (a CsTypeExpr), the creation of a second "m1" method with only one CsTypeExpr parameter will not be accepted by Modelio. This situation, however, is very rare.