private OperationDoc(Type requestType)
        {
            this.Name = requestType.Name;

            var xmlDocument = FindXmlDocumentationFile(requestType);

            Request = new DtoDoc
                      	{
                      		Name = requestType.Name,
                      		XmlDocumentation = xmlDocument != null ? ExtractMemberElement(xmlDocument, "T", requestType.FullName) : null,
                      	};

            this.XmlDocumentation = Request.XmlDocumentation;

            PopulateProperties(Request, requestType, xmlDocument);

            Responses = new List<DtoDoc>();

            // Support for multiple response types may appear in the future.
            // For now, append suffix to find the single response DTO.
            var responseType = requestType.Assembly.GetType(requestType.FullName + ResponseSuffix, false);

            if (responseType != null)
            {
                var response = new DtoDoc
                               	{
                               		Name = responseType.Name,
                               		XmlDocumentation =
                                        xmlDocument != null ? ExtractMemberElement(xmlDocument, "T", responseType.FullName) : null,
                               	};

                PopulateProperties(response, responseType, xmlDocument);

                Responses.Add(response);
            }
        }
        private void PopulateProperties(DtoDoc dto, Type requestType, XDocument xmlDocument)
        {
            foreach (var propertyInfo in requestType.GetProperties(BindingFlags.Public | BindingFlags.Instance))
            {
                var propertyDoc = new PropertyDoc
                                  	{
                                  		Name = propertyInfo.Name,
                                        PropertyType = propertyInfo.PropertyType.Name,
                                  		XmlDocumentation =
                                  			xmlDocument != null ? ExtractMemberElement(xmlDocument, "P", requestType.FullName + "." + propertyInfo.Name) : null
                                  	};

                dto.Properties.Add(propertyDoc);
            }

            dto.Properties.Sort((x, y) => x.Name.CompareTo(y.Name));
        }