C# Reverse Programming- Supported Items

The following is a list of of supported items for the C# Reverse Plug-in.

Supported C# Items

Source code
(Parent Class's Attribute Type)
Qualifier of Parent Association EndChild Association EndMultiplicityConstraint
System::Collections::Generic::ICollectionN/AChild*N/A
System::Collections::Generic::IListN/AChild*{ordered}
System::Collections::Generic::ISetN/AChild*{unique}
System::Collections::Generic::HashSet<Child>N/AChild*{unique}
System::Collections::Generic::SortedSet<Child>N/AChild*{ordered},{unique}
System::Collections::Generic::Queue<Child>N/AChild*{ordered}
System::Collections::Generic::Stack<Child>N/AChild*{ordered}
System::Collections::Generic::IDictionary<string,Child>key:stringChildN/AN/A
System::Collections::Generic::Dictionary<string,Child>key:stringChildN/AN/A
User Defined Template Class <Child>N/AUser Defined Template Class <Child>N/AN/A
System::Collections::Generic::List<Child>N/AChild*{ordered}
User Defined Class[]N/AUser Defined Class*N/A

Please be aware that both Doxygen and this program do not support to reverse C# completely.

ItemDescription
Default Modelastah* professional(astah* UML) Install folder\template\project\C_sharp.asta is imported as a default model. If there is no C_sharp.asta file at the above directory, default model won't be imported.
C_sharp.asta is automatically created in the astah* professional(astah* UML) folder when you install astah* professional(astah* UML), and it contains main classes under System.
Primitive TypeReversed as Primitive Type
constconst in Language tab of [Attribute]
delegatedelegate in Language tab of [Class]
~destructor()Operation that its name starts with ~ (Return Type:"")
enum<<enum>> in Stereotype tab of [Class]
<<enum constant>> in Stereotype of [Attribute]
event

<<event>> in Language tab of [Operation] i.e.) public class EventList { public event NameListHandler nameListEvent; }

  • Name: "nameListEvent"
  • Type: "NameListEventHandler"
  • <<event>>: "true"'s operation
event:add

events that have add will be reversed as Properties
i.e.) public class EventList { public event void operation2 { add { operation2 += value; } } }

  • Name: "operation2"
  • Type: "void"
  • <<property> >: "true"
  • <<property> >get: "true"
  • <<property> >set: "true"'s operation
event:removeevents that have remove are reversed as Properties
i.e.) public class EventList { public event void operation2 { remove { operation2 -= value; } } }
  • Name: "operation2"
  • Type: "void"
  • <<property> >: "true"
  • <<property> >get: "true"
  • <<property> >set: "true"'s operation
generics

Template Parameter Tab of [Class]
[Doxygen 1.5.6 or earlier]

  • "class Class0<T>" works fine
  • "class Class0<T> where T:Class1 cannot be reversed.

[Doxygen 1.5.7 or later]

  • "class Class0<T>" will be a Class.
    (Name: "Class0", Template Parameter: "T", "T"'s type: "<<Unspecified>>")
  • "class Class0<T> where T:Class1" will be a Class.
  • (Name: "Class0", Template Parameter: "T", "T"'s type: "<<Unspecified>")
indexer<<indexer>> in Language Tab of [Operation]
If there is more than one indexer that with same type and same name in one class, the second one and later are skipped via Doxygen.
indexer:get<<indexer>>:get in Language Tab of [Operation]
indexer:set<<indexer>>:set in Language Tab of [Operation]
internal[Class] not supprted, [Attribute] internal of Language Tab, [Operation] internal of Language Tab
inoutDirection Kind in Parameter Tab of [Operation]
override
override in Language Tab of [Operation]
property<<property>> in Language Tab of [Attribute]
property:get<<property>>:get in Language Tab of [Attribute]
property:set<<property>>:set in Language Tab of [Attribute]
readonly
readonly in Language Tab of [Attribute]
sealed
[Class] sealed in Language Tab, [Operation] sealed in Language Tab
static[Class] static in Language Tab, [Attribute] static in Base Tab, [Operation] static in Base Tab
struct<<struct>> in Language tab of [Class]
unsafeunsafe in Language tab of [Class]
virtualvirtual in Language tab of [Class]
volatilevolatile in Language tab of [Attribute]
Via Doxygen, "const volatile int variable;" would be volatile though "volatile int variable;" won't.
Generalization /
Realization
[Class] Generalization / Realization Tab
Via Doxygen,
"class Class0: ClassWithSrc{}(with the source, ClassWithSrc) makes a generalization from the ClassWithSrc to Class0.
"class Class1: ClassWithoutSrc{}(without the source, ClassWithoutSrc) does not import the ClassWithoutSrc itself at all.
extension_methodextension_method in Language Tab of [Operation]

Following items are not currently supported.

  • abstract
  • attribute
  • extern
  • partial
  • Class, Attribute and Operation in other language except for English (i.e. Japanese characters) (Resoloved in Doxygen 1.5.7 or later)
  • *cs. that contains path in other language except for English (i.e. Japanese characters)