public virtual void PrintTypeDefinition(ITypeDefinition typeDefinition) {
if (typeDefinition.IsDelegate) {
PrintDelegateDefinition(typeDefinition);
return;
}
if (((INamedEntity)typeDefinition).Name.Value.Contains("PrivateImplementationDetails")) return;
PrintTypeDefinitionAttributes(typeDefinition);
PrintToken(CSharpToken.Indent);
PrintTypeDefinitionVisibility(typeDefinition);
PrintTypeDefinitionModifiers(typeDefinition);
PrintTypeDefinitionKeywordType(typeDefinition);
PrintTypeDefinitionName(typeDefinition);
if (typeDefinition.IsGeneric) {
this.Traverse(typeDefinition.GenericParameters);
}
PrintTypeDefinitionBaseTypesAndInterfaces(typeDefinition);
PrintTypeDefinitionLeftCurly(typeDefinition);
// Get the members in metadata order for each type
// Note that it's important to preserve the metadata order here (eg. sequential layout fields,
// methods in COMImport types, etc.).
var members = new List<ITypeDefinitionMember>();
foreach (var m in typeDefinition.Methods) members.Add(m);
foreach (var m in typeDefinition.Events) members.Add(m);
foreach (var m in typeDefinition.Properties) members.Add(m);
foreach (var m in typeDefinition.Fields) members.Add(m);
foreach (var m in typeDefinition.NestedTypes) members.Add(m);
Traverse(members);
PrintTypeDefinitionRightCurly(typeDefinition);
}