();
var current = this._versionType;
while (current != null)
{
types.Add(current);
current = current.BaseType;
}
AddSectionHeader(writer, "Inheritance Hierarchy");
int level = 0;
foreach (var type in types.Reverse())
{
for (int i = 0; i < level * 2; i++)
{
writer.Write(" ");
}
if (type.FullName == this._versionType.FullName)
writer.WriteLine("{0}.{1}", type.Namespace, type.GetDisplayName(false));
else
{
writer.WriteLine(type.CreateReferenceHtml(fullTypeName: true));
}
writer.WriteLine("
");
++level;
}
AddSectionClosing(writer);
}
void AddConstructors(TextWriter writer)
{
var constructors = this._versionType.GetConstructors().Where(x => x.IsPublic);
if (!constructors.Any())
return;
AddMemberTableSectionHeader(writer, "Constructors");
foreach (var info in constructors.OrderBy(x => x.Name))
{
AddConstructor(writer, info);
}
AddMemberTableSectionClosing(writer);
}
void AddConstructor(TextWriter writer, ConstructorInfoWrapper info)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
if (info.IsStatic)
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("");
var filename = FilenameGenerator.GenerateFilename(info);
var parameters = FormatParameters(info.GetParameters());
var hrefLink = string.Format("{1}({2})", filename, info.DeclaringType.Name, parameters);
writer.WriteLine(hrefLink);
writer.WriteLine(" | ");
writer.WriteLine("");
var docs = NDocUtilities.FindDocumentation(info);
var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", this.Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
void AddProperties(TextWriter writer)
{
var properties = this._versionType.GetProperties();
if (!properties.Any())
return;
AddMemberTableSectionHeader(writer, "Properties", PropertiesTableColumnHeaders);
foreach (var info in properties.OrderBy(x => x.Name))
{
AddProperty(writer, info);
}
AddMemberTableSectionClosing(writer);
}
void AddProperty(TextWriter writer, PropertyInfoWrapper propertyInfo)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
if (propertyInfo.IsStatic)
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("");
writer.WriteLine(propertyInfo.Name);
writer.WriteLine(" | ");
writer.WriteLine("");
writer.Write(ConstructTypeInfoLinkContent(propertyInfo.PropertyType));
writer.WriteLine(" | ");
writer.WriteLine("");
string html = string.Empty;
var isInherited = !propertyInfo.DeclaringType.Equals(_versionType);
if (isInherited)
{
html = string.Format("Inherited from {0}.{1}.", propertyInfo.DeclaringType.Namespace, propertyInfo.DeclaringType.Name);
}
else {
var docs = NDocUtilities.FindDocumentation(propertyInfo);
html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
}
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
void AddMethods(TextWriter writer)
{
var methods = this._versionType.GetMethodsToDocument();
if (!methods.Any())
return;
AddMemberTableSectionHeader(writer, "Methods");
const string net35PatternNote = "" +
"
Asynchronous operations (methods ending with Async) in the table below are for .NET 4.5 or higher. "
+ "For .NET 3.5 the SDK follows the standard naming convention of BeginMethodName and EndMethodName to "
+ "indicate asynchronous operations - these method pairs are not shown in the table below.
";
writer.WriteLine(net35PatternNote);
foreach (var info in methods.OrderBy(x => x.Name))
{
AddMethod(writer, info);
}
AddMemberTableSectionClosing(writer);
}
void AddMethod(TextWriter writer, MethodInfoWrapper info)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
if (info.IsStatic)
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("");
writer.WriteLine("{3}({4})",
RootRelativePath,
GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
FilenameGenerator.GenerateFilename(info),
info.Name,
FormatParameters(info.GetParameters()));
writer.WriteLine(" | ");
writer.WriteLine("");
string html = string.Empty;
var isInherited = !info.DeclaringType.Equals(_versionType);
if (isInherited)
{
html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
}
else {
var docs = NDocUtilities.FindDocumentation(info);
html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
}
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
void AddFields(TextWriter writer)
{
var fields = this._versionType.GetFields();
if (!fields.Any())
return;
AddMemberTableSectionHeader(writer, "Fields", FieldTableColumnHeaders);
foreach (var info in fields.OrderBy(x => x.Name))
{
AddField(writer, info);
}
AddMemberTableSectionClosing(writer);
}
void AddField(TextWriter writer, FieldInfoWrapper info)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
if (info.IsStatic)
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("{0} | ", info.Name);
writer.WriteLine("");
writer.Write(ConstructTypeInfoLinkContent(info.FieldType));
writer.WriteLine(" | ");
writer.WriteLine("");
string html = string.Empty;
var isInherited = !info.DeclaringType.Equals(_versionType);
if (isInherited)
{
html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
}
else {
var docs = NDocUtilities.FindDocumentation(info);
html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
}
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
void AddEvents(TextWriter writer)
{
var fields = this._versionType.GetEvents();
if (!fields.Any())
return;
AddMemberTableSectionHeader(writer, "Events");
foreach (var info in fields.OrderBy(x => x.Name))
{
AddEvent(writer, info);
}
AddMemberTableSectionClosing(writer);
}
void AddEvent(TextWriter writer, EventInfoWrapper info)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
if (info.IsStatic)
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("");
writer.WriteLine("{3}",
RootRelativePath,
GenerationManifest.OutputSubFolderFromNamespace(info.DeclaringType.Namespace),
FilenameGenerator.GenerateFilename(info),
info.Name);
writer.WriteLine(" | ");
writer.WriteLine("");
string html = string.Empty;
var isInherited = !info.DeclaringType.Equals(_versionType);
if (isInherited)
{
html = string.Format("Inherited from {0}.{1}.", info.DeclaringType.Namespace, info.DeclaringType.Name);
}
else {
var docs = NDocUtilities.FindDocumentation(info);
html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
}
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
public void AddEnumMembers(TextWriter writer)
{
var enumNames = this._versionType.GetEnumNames();
if (!enumNames.Any())
return;
AddMemberTableSectionHeader(writer, "Members");
foreach (var name in enumNames.OrderBy(x => x))
{
AddEnumMember(writer, name);
}
AddMemberTableSectionClosing(writer);
}
void AddEnumMember(TextWriter writer, string enumName)
{
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(" ", RootRelativePath);
writer.WriteLine(" | ");
writer.WriteLine("");
writer.WriteLine(enumName);
writer.WriteLine(" | ");
writer.WriteLine("");
var docs = NDocUtilities.FindFieldDocumentation(this._versionType, enumName);
var html = NDocUtilities.TransformDocumentationToHTML(docs, "summary", Artifacts.ManifestAssemblyContext.SdkAssembly, this._version);
writer.WriteLine(html);
writer.WriteLine(" | ");
writer.WriteLine("
");
}
///
/// Constructs href markup, enclosed in a span, to the page containing the details of the
/// specified type (this can be external to AWS documentation) as well as in another service.
///
///
string ConstructTypeInfoLinkContent(TypeWrapper typeWrapper)
{
var sb = new StringBuilder("");
sb.Append(typeWrapper.CreateReferenceHtml(fullTypeName: true));
sb.Append("");
return sb.ToString();
}
protected void AddSyntax(TextWriter writer)
{
var csharpSyntax = new CSharpSyntaxGenerator(this._version).GenerateSyntax(this._versionType);
base.AddSyntax(writer, csharpSyntax);
}
protected override string GetTOCID()
{
return this._versionType.FullName.Replace('.', '_');
}
}
}