public override void Generate()
        {
            if (!this.IsGenerated)
            {
                TypeDef definingType = null;
                if (this.typesMethods != null && this.typesMethods.Count > 0)
                {
                    definingType = (TypeDef)this.typesMethods[0].Type;
                }
                if (!this.xmlComments.Exists())
                {
                    this.Blocks.Add(new NoXmlComments(definingType));
                }

                this.Blocks.Add(new Header1(definingType.GetDisplayName(false) + " Constructors"));

                if (this.typesMethods != null && this.typesMethods.Count > 0)
                {
                    SummaryTable methods = new SummaryTable();

                    var sortedMethods = from method in this.typesMethods
                                        where method.IsConstructor &&
                                        !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        orderby method.Name
                                        select method;
                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        CRefPath crefPath = new CRefPath(currentMethod);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block constructorSummary = this.GetSummaryFor(
                            xmlComments,
                            currentMethod.Assembly,
                            crefPath
                            );

                        methods.AddItem(link, constructorSummary, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    this.Blocks.Add(methods);
                }

                this.IsGenerated = true;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Generates the pages contents.
        /// </summary>
        public override void Generate()
        {
            if (!IsGenerated)
            {
                TypeDef definingType = null;
                if (_properties != null && _properties.Count > 0)
                {
                    definingType = (TypeDef)_properties[0].OwningType;
                }
                if (!_xmlComments.Exists())
                {
                    Blocks.Add(new NoXmlComments(definingType));
                }

                Blocks.Add(new Header1(definingType.GetDisplayName(false) + " Properties"));

                if (_properties != null && _properties.Count > 0)
                {
                    SummaryTable methods = new SummaryTable();

                    var sortedProperties = from property in _properties
                                           orderby new DisplayNameSignitureConvertor(property, false, true).Convert()
                                           select property;

                    foreach (PropertyDef currentProperty in sortedProperties)
                    {
                        CRefPath path = new CRefPath(currentProperty);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new Run(new DisplayNameSignitureConvertor(currentProperty, false, true).Convert()));
                        link.Tag    = new EntryKey(currentProperty.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = GetSummaryFor(_xmlComments,
                                                          currentProperty.OwningType.Assembly,
                                                          path);

                        methods.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentProperty));
                    }
                    this.Blocks.Add(methods);
                }

                this.IsGenerated = true;
            }
        }
        public override void Generate()
        {
            this.Blocks.Add(new Header1(this.associatedEntry.Name));

            SummaryTable classTable = new SummaryTable("Namespace", string.Empty, false, false);

            foreach (Entry currentNamespace in this.associatedEntry.Children)
            {
                CRefPath crefPath = CRefPath.Parse(string.Format("N:{0}", currentNamespace.SubKey));

                // Find the description for the type
                // Block description = this.GetSummaryFor(xmlFile, currentType.Assembly, "/doc/members/member[@name='" + crefPath + "']/summary");
                Hyperlink nameLink = new Hyperlink(new Run(currentNamespace.Name));
                nameLink.Tag    = new EntryKey(currentNamespace.Key, currentNamespace.SubKey);
                nameLink.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);
                classTable.AddItem(nameLink, string.Empty);
            }
            this.Blocks.Add(classTable);
        }
        /// <summary>
        /// Generates the pages contents
        /// </summary>
        public override void Generate()
        {
            if (!this.IsGenerated)
            {
                TypeRef definingType = null;
                if (_fields.Count > 0)
                {
                    definingType = _fields[0].Type;
                }
                if (!_xmlComments.Exists())
                {
                    this.Blocks.Add(new NoXmlComments(definingType));
                }

                this.Blocks.Add(new Header1(definingType.GetDisplayName(false) + " Fields"));

                if (_fields != null && _fields.Count > 0)
                {
                    SummaryTable displayedFields = new SummaryTable();

                    var sortedFields = from field in _fields
                                       orderby field.Name
                                       where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(field)
                                       select field;
                    foreach (FieldDef currentField in sortedFields)
                    {
                        CRefPath  crefPath = new CRefPath(currentField);
                        Hyperlink link     = new Hyperlink();
                        link.Inlines.Add(new Run(currentField.Name));
                        link.Tag    = new EntryKey(currentField.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block summary = GetXmlComments(currentField, crefPath);

                        displayedFields.AddItem(link, summary, Model.ElementIconConstants.GetIconPathFor(currentField));
                    }
                    this.Blocks.Add(displayedFields);
                }

                this.IsGenerated = true;
            }
        }
        /// <summary>
        /// Generates the contents of the page.
        /// </summary>
        public override void Generate()
        {
            if (!this.IsGenerated)
            {
                this.Blocks.Add(new Header1(System.IO.Path.GetFileName(assembly.FileName)));
                Paragraph versionDetails = new Paragraph();
                versionDetails.Inlines.Add(new Bold(new Run("Version: ")));
                versionDetails.Inlines.Add(new Run(assembly.Version.ToString()));
                this.Blocks.Add(versionDetails);

                // Output a list of namespaces in this assembly as links
                this.Blocks.Add(new Header2("Namespaces"));
                SummaryTable  namespaces    = new SummaryTable("Name", string.Empty, false, false);
                List <string> allNamespaces = this.assembly.GetNamespaces();

                // Sort the namespaces
                allNamespaces.Sort();

                int count = allNamespaces.Count;
                for (int i = 0; i < count; i++)
                {
                    string current = allNamespaces[i];
                    if (string.IsNullOrEmpty(current))
                    {
                        continue;                               // Skip the empty namespace defined in all assemblies
                    }
                    Hyperlink link = new Hyperlink(new Run(current));
                    link.Tag    = new CrefEntryKey(assembly, "N:" + current);
                    link.Click += new RoutedEventHandler(LinkHelper.Resolve);
                    namespaces.AddItem(link, string.Empty);
                }
                this.Blocks.Add(namespaces);

                this.IsGenerated = true;
            }
        }
        /// <summary>
        /// Adds a table of the <paramref name="types"/> to the document with a header <paramref name="name"/>.
        /// </summary>
        /// <param name="name">The header text.</param>
        /// <param name="types">The types to add to the table.</param>
        /// <param name="xmlFile">The XML file to read comments from.</param>
        private void OutputTypes(string name, IOrderedEnumerable <TypeDef> types, ICommentSource xmlFile)
        {
            if (types.Count() != 0)
            {
                SummaryTable classTable = new SummaryTable();
                foreach (TypeDef currentType in types)
                {
                    CRefPath crefPath = new CRefPath(currentType);

                    // Find the description for the type
                    Block description = this.GetSummaryFor(
                        xmlFile,
                        currentType.Assembly,
                        crefPath
                        );
                    Hyperlink nameLink = new Hyperlink(new Run(currentType.GetDisplayName(false)));
                    nameLink.Tag    = new EntryKey(currentType.GetGloballyUniqueId());
                    nameLink.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);
                    classTable.AddItem(nameLink, description, Model.ElementIconConstants.GetIconPathFor(currentType));
                }
                this.Blocks.Add(new Header2(name));
                this.Blocks.Add(classTable);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Generates the contents of the page, utilising details of the
        /// type and its associated xml comments.
        /// </summary>
        public override void Generate()
        {
            if (!this.IsGenerated)
            {
                CRefPath     crefPath     = new CRefPath(this._representedType);
                List <Block> parsedBlocks = Elements.Parser.Parse(this._representedType.Assembly, _commentsXml, crefPath);

                if (!_commentsXml.Exists())
                {
                    this.Blocks.Add(new NoXmlComments(this._representedType));
                }

                this.Blocks.Add(new Header1(this._representedType.Name + " Enumeration"));

                // Add the summary if it exists
                if (parsedBlocks != null)
                {
                    Block summary = parsedBlocks.Find(currentBlock => currentBlock is Summary);
                    if (summary != null)
                    {
                        this.Blocks.Add(summary);
                    }
                }

                this.AddSyntaxBlock(this._representedType);

                // Add the table of classes to the page
                List <FieldDef> fields       = this._representedType.GetFields();
                SummaryTable    classTable   = new SummaryTable("Member Name", "Description", false);
                var             sortedFields = from field in fields
                                               orderby field.Name
                                               select field;
                foreach (FieldDef currentField in sortedFields)
                {
                    if (currentField.IsSystemGenerated)
                    {
                        continue;
                    }
                    Block description = this.GetSummaryFor(
                        _commentsXml,
                        currentField.Assembly,
                        new CRefPath(currentField)
                        );
                    classTable.AddItem(currentField.Name, description);
                }
                this.Blocks.Add(new Header2("Members"));
                this.Blocks.Add(classTable);

                if (parsedBlocks != null)
                {
                    Block permissions = parsedBlocks.Find(current => current is PermissionList);
                    if (permissions != null)
                    {
                        this.Blocks.Add(permissions);
                    }
                }

                // Add the remarks if it exists
                if (parsedBlocks != null)
                {
                    Block remarks = parsedBlocks.Find(currentBlock => currentBlock is Remarks);
                    if (remarks != null)
                    {
                        this.Blocks.Add(remarks);
                    }
                }

                // Add the example if it exists
                if (parsedBlocks != null)
                {
                    Block summary = parsedBlocks.Find(currentBlock => currentBlock is Example);
                    if (summary != null)
                    {
                        this.Blocks.Add(new Header2("Examples"));
                        this.Blocks.Add(summary);
                    }
                }

                // Add the seealso list if it exists
                this.AddSeeAlso(parsedBlocks);

                this.IsGenerated = true;
            }
        }
Esempio n. 8
0
        public override void Generate()
        {
            if (!IsGenerated)
            {
                TypeDef definingType = null;
                if (_typesMethods != null && _typesMethods.Count > 0)
                {
                    definingType = _typesMethods[0].Type as TypeDef;
                }

                if (!_xmlComments.Exists())
                {
                    Blocks.Add(new NoXmlComments(definingType));
                }

                Blocks.Add(new Header1(definingType.GetDisplayName(false) + " Methods"));

                if (_typesMethods != null && _typesMethods.Count > 0)
                {
                    SummaryTable methods = new SummaryTable();

                    var sortedMethods = from method in this._typesMethods
                                        where !method.IsConstructor
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;

                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        CRefPath path = new CRefPath(currentMethod);

                        System.Windows.Documents.Block description = this.GetSummaryFor(_xmlComments,
                                                                                        currentMethod.Assembly,
                                                                                        path
                                                                                        );

                        methods.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    Blocks.Add(methods);
                }

                if (definingType != null && definingType.ExtensionMethods.Count > 0)
                {
                    SummaryTable methods = new SummaryTable();

                    var sortedMethods = from method in definingType.ExtensionMethods
                                        where !method.IsConstructor
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;

                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        DisplayNameSignitureConvertor      displayNameSig = new DisplayNameSignitureConvertor(currentMethod, false, true, true);
                        System.Windows.Documents.Hyperlink link           = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(displayNameSig.Convert()));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        CRefPath path = new CRefPath(currentMethod);

                        System.Windows.Documents.Block description = this.GetSummaryFor(_xmlComments,
                                                                                        currentMethod.Assembly,
                                                                                        path
                                                                                        );

                        methods.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    Blocks.Add(new Header2("Extension Methods"));
                    Blocks.Add(methods);
                }

                IsGenerated = true;
                // we also no longer need to store a reference to the XML file I think so we can remove it
                _xmlComments  = null;
                _typesMethods = null;
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Outputs the members tables.
        /// </summary>
        private void OutputMembersLists()
        {
            SummaryTable members;
            CRefPath     crefPath;
            List <Block> tempContainer = new List <Block>();

            var constructors = from method in this._representedType.GetConstructors()
                               orderby method.Name
                               where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                               select method;

            if (constructors != null && constructors.Count() > 0)
            {
                tempContainer.Add(new Header2("Constructors"));
                members = new SummaryTable();
                foreach (MethodDef currentMethod in constructors)
                {
                    crefPath = new CRefPath(currentMethod);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                    link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml,
                                                           currentMethod.Assembly,
                                                           crefPath);

                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                }
                tempContainer.Add(members);
            }

            var fields = from field in this._representedType.GetFields()
                         orderby field.Name
                         where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(field)
                         select field;

            if (fields != null && fields.Count() > 0)
            {
                tempContainer.Add(new Header2("Fields"));
                members = new SummaryTable();
                foreach (FieldDef currentField in fields)
                {
                    crefPath = new CRefPath(currentField);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(currentField.Name));
                    link.Tag    = new EntryKey(currentField.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml,
                                                           currentField.Assembly,
                                                           crefPath);
                    Block value = this.GetSummaryFor(_commentsXml,
                                                     currentField.Assembly,
                                                     crefPath);
                    if (description != null)
                    {
                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentField));
                    }
                    else
                    {
                        members.AddItem(link, value, Model.ElementIconConstants.GetIconPathFor(currentField));
                    }
                }
                tempContainer.Add(members);
            }

            var properties = from property in this._representedType.GetProperties()
                             orderby new DisplayNameSignitureConvertor(property, false, true).Convert()
                             where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(property)
                             select property;

            if (properties != null && properties.Count() > 0)
            {
                tempContainer.Add(new Header2("Properties"));
                members = new SummaryTable();
                foreach (PropertyDef currentProperty in properties)
                {
                    crefPath = new CRefPath(currentProperty);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new Run(new DisplayNameSignitureConvertor(currentProperty, false, true).Convert()));
                    link.Tag    = new EntryKey(currentProperty.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml, currentProperty.OwningType.Assembly,
                                                           crefPath);
                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentProperty));
                }
                tempContainer.Add(members);
            }

            var events = from c in this._representedType.GetEvents()
                         orderby c.Name
                         where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(c)
                         select c;

            if (events != null && events.Count() > 0)
            {
                tempContainer.Add(new Header2("Events"));
                members = new SummaryTable();
                foreach (EventDef currentEvent in events)
                {
                    crefPath = new CRefPath(currentEvent);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(currentEvent.Name));
                    link.Tag    = new EntryKey(currentEvent.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml, currentEvent.Type.Assembly,
                                                           crefPath);
                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentEvent));
                }
                tempContainer.Add(members);
            }

            var methods = from method in this._representedType.GetMethods()
                          orderby method.Name
                          where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                          select method;

            if (methods != null && methods.Count() > 0)
            {
                tempContainer.Add(new Header2("Methods"));
                members = new SummaryTable();
                foreach (MethodDef currentMethod in methods)
                {
                    crefPath = new CRefPath(currentMethod);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                    link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml, currentMethod.Assembly,
                                                           crefPath);

                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                }
                tempContainer.Add(members);
            }

            var operators = from method in this._representedType.GetOperators()
                            orderby method.Name
                            where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                            select method;

            if (operators != null && operators.Count() > 0)
            {
                tempContainer.Add(new Header2("Operators"));
                members = new SummaryTable();
                foreach (MethodDef currentMethod in operators)
                {
                    crefPath = new CRefPath(currentMethod);
                    System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                    link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    Block description = this.GetSummaryFor(_commentsXml, currentMethod.Assembly,
                                                           crefPath);

                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                }
                tempContainer.Add(members);
            }

            if (this._representedType != null && this._representedType.ExtensionMethods.Count > 0)
            {
                members = new SummaryTable();

                var sortedMethods = from method in this._representedType.ExtensionMethods
                                    where !method.IsConstructor
                                    orderby method.Name
                                    where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                    select method;
                foreach (MethodDef currentMethod in sortedMethods)
                {
                    DisplayNameSignitureConvertor      displayNameSig = new DisplayNameSignitureConvertor(currentMethod, false, true, true);
                    System.Windows.Documents.Hyperlink link           = new System.Windows.Documents.Hyperlink();
                    link.Inlines.Add(new System.Windows.Documents.Run(displayNameSig.Convert()));
                    link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                    link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                    CRefPath path = new CRefPath(currentMethod);

                    Block description = this.GetSummaryFor(_commentsXml,
                                                           currentMethod.Assembly,
                                                           path
                                                           );

                    members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                }
                tempContainer.Add(new Header2("Extension Methods"));
                tempContainer.Add(members);
            }

            if (tempContainer.Count > 0)
            {
                this.Blocks.Add(new Paragraph());
                this.Blocks.Add(new Paragraph(new Run(string.Format("The {0} type exposes the following members.", this._representedType.GetDisplayName(false)))));
                this.Blocks.AddRange(tempContainer);
            }
        }
        public override void Generate()
        {
            if (!this.IsGenerated)
            {
                CRefPath     crefPath = null;
                SummaryTable members;

                if (!this.xmlComments.Exists())
                {
                    this.Blocks.Add(new NoXmlComments(this.representedType));
                }

                this.Blocks.Add(new Header1(this.representedType.GetDisplayName(false) + " Members"));

                List <MethodDef> constructors = this.representedType.GetConstructors();
                if (constructors != null && constructors.Count > 0)
                {
                    this.Blocks.Add(new Header2("Constructors"));
                    members = new SummaryTable();
                    var sortedMethods = from method in constructors
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;
                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        crefPath = new CRefPath(currentMethod);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments,
                                                               currentMethod.Assembly,
                                                               crefPath);

                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    this.Blocks.Add(members);
                }

                List <FieldDef> fields = this.representedType.GetFields();
                if (fields != null && fields.Count > 0)
                {
                    this.Blocks.Add(new Header2("Fields"));
                    members = new SummaryTable();
                    var sortedFields = from field in fields
                                       orderby field.Name
                                       where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(field)
                                       select field;
                    foreach (FieldDef currentField in sortedFields)
                    {
                        crefPath = new CRefPath(currentField);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentField.Name));
                        link.Tag    = new EntryKey(currentField.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments,
                                                               currentField.Assembly,
                                                               crefPath);
                        Block value = this.GetSummaryFor(xmlComments,
                                                         currentField.Assembly,
                                                         crefPath);
                        if (description != null)
                        {
                            members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentField));
                        }
                        else
                        {
                            members.AddItem(link, value, Model.ElementIconConstants.GetIconPathFor(currentField));
                        }
                    }
                    this.Blocks.Add(members);
                }

                List <PropertyDef> properties = this.representedType.GetProperties();
                if (properties != null && properties.Count > 0)
                {
                    this.Blocks.Add(new Header2("Properties"));
                    members = new SummaryTable();

                    var sortedProperties = from property in properties
                                           orderby new DisplayNameSignitureConvertor(property, false, true).Convert()
                                           where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(property)
                                           select property;

                    foreach (PropertyDef currentProperty in sortedProperties)
                    {
                        crefPath = new CRefPath(currentProperty);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new Run(new DisplayNameSignitureConvertor(currentProperty, false, true).Convert()));
                        link.Tag    = new EntryKey(currentProperty.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments, currentProperty.OwningType.Assembly, crefPath);
                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentProperty));
                    }
                    this.Blocks.Add(members);
                }

                List <EventDef> events = this.representedType.GetEvents();
                if (events != null && events.Count > 0)
                {
                    this.Blocks.Add(new Header2("Events"));
                    members = new SummaryTable();
                    var sortedEvents = from c in events
                                       orderby c.Name
                                       where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(c)
                                       select c;
                    foreach (EventDef currentEvent in sortedEvents)
                    {
                        crefPath = new CRefPath(currentEvent);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentEvent.Name));
                        link.Tag    = new EntryKey(currentEvent.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments, currentEvent.Type.Assembly,
                                                               crefPath);
                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentEvent));
                    }
                    this.Blocks.Add(members);
                }

                List <MethodDef> methods = this.representedType.GetMethods();
                if (methods != null && methods.Count > 0)
                {
                    this.Blocks.Add(new Header2("Methods"));
                    members = new SummaryTable();
                    var sortedMethods = from method in methods
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;
                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        crefPath = new CRefPath(currentMethod);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments, currentMethod.Assembly,
                                                               crefPath);

                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    this.Blocks.Add(members);
                }

                List <MethodDef> operators = this.representedType.GetOperators();
                if (operators != null && operators.Count > 0)
                {
                    this.Blocks.Add(new Header2("Operators"));
                    members = new SummaryTable();
                    var sortedMethods = from method in operators
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;
                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        crefPath = new CRefPath(currentMethod);
                        System.Windows.Documents.Hyperlink link = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(currentMethod.GetDisplayName(false)));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        Block description = this.GetSummaryFor(xmlComments, currentMethod.Assembly,
                                                               crefPath);

                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    this.Blocks.Add(members);
                }

                if (this.representedType != null && this.representedType.ExtensionMethods.Count > 0)
                {
                    members = new SummaryTable();

                    var sortedMethods = from method in this.representedType.ExtensionMethods
                                        where !method.IsConstructor
                                        orderby method.Name
                                        where !LiveDocumentorFile.Singleton.LiveDocument.IsMemberFiltered(method)
                                        select method;
                    foreach (MethodDef currentMethod in sortedMethods)
                    {
                        DisplayNameSignitureConvertor      displayNameSig = new DisplayNameSignitureConvertor(currentMethod, false, true, true);
                        System.Windows.Documents.Hyperlink link           = new System.Windows.Documents.Hyperlink();
                        link.Inlines.Add(new System.Windows.Documents.Run(displayNameSig.Convert()));
                        link.Tag    = new EntryKey(currentMethod.GetGloballyUniqueId());
                        link.Click += new System.Windows.RoutedEventHandler(LinkHelper.Resolve);

                        CRefPath path = new CRefPath(currentMethod);

                        Block description = this.GetSummaryFor(xmlComments,
                                                               currentMethod.Assembly,
                                                               path
                                                               );

                        members.AddItem(link, description, Model.ElementIconConstants.GetIconPathFor(currentMethod));
                    }
                    this.Blocks.Add(new Header2("Extension Methods"));
                    this.Blocks.Add(members);
                }

                this.IsGenerated = true;
            }
        }