protected override void GenerateTypeStart(CodeTypeDeclaration declaration)
{
TextWriter output = Output;
OutputAttributes (declaration.CustomAttributes, null, false);
if (!IsCurrentDelegate) {
OutputTypeAttributes (declaration);
output.Write (GetSafeName (declaration.Name));
#if NET_2_0
GenerateGenericsParameters (declaration.TypeParameters);
#endif
IEnumerator enumerator = declaration.BaseTypes.GetEnumerator ();
if (enumerator.MoveNext ()) {
CodeTypeReference type = (CodeTypeReference) enumerator.Current;
output.Write (" : ");
OutputType (type);
while (enumerator.MoveNext ()) {
type = (CodeTypeReference) enumerator.Current;
output.Write (", ");
OutputType (type);
}
}
#if NET_2_0
GenerateGenericsConstraints (declaration.TypeParameters);
#endif
OutputStartBrace ();
++Indent;
} else {
if ((declaration.TypeAttributes & TypeAttributes.VisibilityMask) == TypeAttributes.Public) {
output.Write ("public ");
}
CodeTypeDelegate delegateDecl = (CodeTypeDelegate) declaration;
output.Write ("delegate ");
OutputType (delegateDecl.ReturnType);
output.Write (" ");
output.Write (GetSafeName (declaration.Name));
output.Write ("(");
OutputParameters (delegateDecl.Parameters);
output.WriteLine (");");
}
}